當調試關閉時,我無法讓Django正確引用我的靜態文件。我知道這個網站上有很多關於此的帖子,但他們都沒有解決我的問題。未找到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的,而不是由 您的Web服務器提供直接
你能列出你的項目目錄結構嗎? –
您的應用程序靜態文件被提供?你還可以檢查'static'目錄的權限嗎? –
我不知道nginx,但是與Apache服務相比,它看起來很少編碼。看看這裏的Apache示例https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/#serving-files – HenryM