当调试关闭时,我无法让Django正确引用我的静态文件。我知道这个网站上有很多其他帖子,但没有一个帖子解决了我的问题。
我的目录树是这样的:
└── project
└── app1
└── app1
├── manage.py
└── project
└── project.sock
└── projectenv
└── static
└── template
在我settings.py
我有以下内容:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
在我的nginx配置文件中,我有以下内容:
location /static {
autoindex on;
alias /home/user/myproject/static/;
}
正确运行./manage.py collectstatic
将我的所有文件放入静态目录。
然而,在运行我的服务器时,所有这些静态文件404:
[22/Jul/2016 17:05:31] "GET /static/lib/bootstrap/js/bootstrap.min.js HTTP/1.1" 404 6418
[22/Jul/2016 17:05:31] "GET /static/lib/bootstrap/css/bootstrap.min.css HTTP/1.1" 404 6418
[22/Jul/2016 17:05:31] "GET /static/lib/jquery/jquery.min.js HTTP/1.1" 404 6418
[22/Jul/2016 17:05:31] "GET /static/lib/bootstrap/js/bootstrap.min.js HTTP/1.1" 404 6418
静态文件与manage.py文件放在同一目录中。我做错了什么?
在我的urls.py中添加此功能确实有效,但我不应该直接从nginx提供它们吗?
if settings.DEBUG is False: #if DEBUG is True it will be served automatically
urlpatterns += patterns('',
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}),
)
由于静态文件渲染通过Django而变慢,因此速度较慢 由您的网络服务器直接提供
答案 0 :(得分:0)
您应该通过以下方式配置您的nginx:edit nginx.conf:添加:
location ~* ^(/static/|/media/).+.(jpg|jpeg|gif|png|zip|eot|woff|woff2|svg|ttf|tgz|gz|rar|bz2|doc|xls|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf)$ {
root /path/to/parent/folder/of/static/folder;
}
到你网站对应的server {
子句,然后重新启动nginx它应该解决你的问题,如果不是 - 检查nginx日志,确保该文件夹对nginx用户/组等有适当的权限