当前位置: 首页 > 知识库问答 >
问题:

为什么nginx不能用django和gunicorn显示静态内容?

陶树
2023-03-14

我正在尝试使用gunicorn 19.19运行django管理应用程序。0和nginx1.10。使用python 3.5在树莓皮3(raspian 9)上创建3。3和django 2.1。7.Nginx似乎工作正常,Nginx和gunicorn错误日志为空。但是,应用程序不会显示任何静态内容。

我检查了nginx.conf文件。

我运行了collectstatic并检查了所有文件是否都在那里。

我可以把浏览器指向192.168。1.20/static,它显示正确的目录。

我还可以浏览到所有文件。

我尝试按照路径在nginx.conf文件与'/'

管理应用程序的所有功能都可以正常工作。只是没有静态内容。

我已经在谷歌上搜索并阅读/尝试了我能找到的每一个论坛补丁。

我还运行了python开发服务器(python manage.py runserver)。在这个配置中,静态内容显示得很好。

events{}

http {
    server {
            listen       80;
            server_name  localhost;

            location /static {
                    autoindex on; 
                    alias /home/pi/DigitalClock/dcvenv/static;
            }
            location / {
                    error_log /home/pi/DigitalClock/dcvenv/nginx_err.log;
                    access_log /home/pi/DigitalClock/dcvenv/nginx_acc.log;
                    proxy_pass http://127.0.0.1:8000;
            }
    }
}
gunicorn dcweb.wsgi:application --bind localhost:8000
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static/')

192.168.1.10--[18/Feb/2019:12:45:43 -0800]"POST /admin/login/?Next=/admin/HTTP/1.1"302 0"http://192.168.1.20/admin/login/?next=/admin/"Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/71.0.3578.98Safari /537.36"192.168.1.10 - - [18/Feb/2019:12:45:43 -0800]"GET /admin/HTTP/1.1"200 4944"http://192.168.1.20/admin/login/?next=/admin/"Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/71.0.3578.98Safari /537.36192.168.1.10--[18/Feb/2019:12:45:59 -0800]"GET /admin/auth/group/HTTP/1.1"200 3500"http://192.168.1.20/admin/"Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML, like Gecko)Chrome/71.0.3578.98Safari/537.36"192.168.1.10--[18/Feb/2019:12:45:59 -0800]"GET /admin/jsi18n/HTTP/1.1"200 3185"http://192.168.1.20/admin/auth/group/"Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,像壁虎)Chrome/71.0.3578.98Safari/537.36"

共有1个答案

江英卓
2023-03-14

将此代码放入您的设置中。py,那么您就有了collectstatic,还可以测试DEBUG=True

ROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')  # specify static root

添加您的url项目

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
   # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

请尝试用这种方式更新您的项目:

urlpatterns = patterns('',
....urls......
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在您的设置中。派克

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
REPOSITORY_ROOT = os.path.dirname(BASE_DIR)

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(REPOSITORY_ROOT, 'static/')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(REPOSITORY_ROOT, 'media/')
 类似资料:
  • 问题内容: 为什么我们不能在非静态内部类中使用静态方法? 如果我将内部类设为静态,则可以工作。为什么? 问题答案: 因为内部类的实例与外部类的实例隐式关联,所以它本身不能定义任何静态方法。由于静态嵌套类无法直接引用其封闭类中定义的实例变量或方法,因此只能通过对象引用使用它们,因此在静态嵌套类中声明静态方法是安全的。

  • 问题内容: 为什么我们不能在非静态内部类中使用静态方法? 如果我将内部类设为静态,则可以工作。为什么呢 问题答案: 因为内部类的实例与外部类的实例隐式关联,所以它本身不能定义任何静态方法。由于静态嵌套类无法直接引用其封闭类中定义的实例变量或方法,因此只能通过对象引用使用它们,因此在静态嵌套类中声明静态方法是安全的。

  • 问题内容: Java教程说,由于内部类与封闭类的实例相关联,所以它(内部类)本身不能定义任何静态成员。 对我来说很有趣,为什么内部类不能声明静态成员,例如某个字段,该内部类的实例可能会与同一内部类的其他实例共享这些成员?这仅仅是Java中必须被视为理所当然的事情的实现吗? 问题答案: 基本上只是一个任意决定。我们没有理由也 不可能 得到支持,但还算不上什么好的理由 来 支持它。只需在外部类中声明静

  • 问题内容: 我知道创建一个非静态内部类对象需要一个外部类对象,而创建的非静态内部类对象会自动具有对该外部类对象的隐藏引用。但是为什么非静态内部类不能具有静态成员呢?Java设计人员只需要禁止在内部类的静态方法内访问非静态外部类字段,这样做会更有意义,不是吗? 如果在内部类中具有静态成员没有意义,那么为什么内部类可以通过继承具有静态成员的类来继承静态成员? 我也读了这篇文章。如前所述: 内部类可以继

  • 报价王 JLS #8.1.3: 内部类不能声明静态初始值设定项 (§8.7)...... 这表现为: 现在既然Java的内部(非静态)类像其他类一样由类加载器加载,为什么我们不能为它们提供静态初始化器呢? 这一限制背后的原因是什么?

  • 问题内容: 在静态上下文中,为什么不能调用的静态版本(而不是必须使用)? 编译器不够聪明,无法确定何时使用对象方法+何时使用静态方法吗? 注意: 我并不是说应该使用a 而不 是非静态方法(这很明显- 如果是的子类,则a的of 可能返回或其他,必须在运行时确定)。 我是说我想知道为什么没有 两个 版本,一个是仅适用于静态上下文的静态方法,另一个是常规的非静态方法。如果不可能,那就不可能了,那就是答案