找不到Django静态文件(调试关闭)

时间:2016-07-22 17:10:29

标签: python django nginx

当调试关闭时,我无法让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而变慢,因此速度较慢   由您的网络服务器直接提供

1 个答案:

答案 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用户/组等有适当的权限