【发布时间】:2016-07-22 17:10:29
【问题描述】:
当调试关闭时,我无法让 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 进行的,所以速度较慢 由您的网络服务器直接提供服务
【问题讨论】:
-
你能在这里列出你的项目目录结构吗?
-
是否为您的应用程序提供静态文件?还能检查
static目录的权限吗? -
我不了解 nginx,但与使用 Apache 服务所需的代码相比,这看起来像是很少的编码。看看这里的 Apache 示例docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/…
-
静态目录有正确的权限。