django DEBUG=False問題
在django的settings中. 將DEBUG 設定為False.,有可能會報以下錯:
一、CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
解決辦法:
提示DEBUG為False時,必須設定settings.ALLOWED_HOSTS .
ALLOWED_HOSTS = [
'.example.com', # Allow domain and subdomains
'.example.com.', # Also allow FQDN and subdomains ]
或者需要設定任何使用者均可以訪問,那麼可以這樣設定:
ALLOWED_HOSTS = ['*']
二、Django設定DEBUG為False時,'django.contrib.staticfiles'
會關閉,即Django不會自動搜尋靜態檔案。
靜態檔案不能載入導致的問題有兩個:
(1)頁面排版不正常,即css檔案不能正常載入;
(2)通過url不能訪問靜態檔案,如圖片等。
解決:
可以使用Django來處理靜態檔案,也可以使用Nginx處理靜態檔案,這裡給出Django處理靜態檔案的辦法。
解決辦法一:
如果您仍需要本地伺服器靜態(例如,無需除錯進行測試),您可以在不安全模式下執行server,啟動伺服器命令後面新增
“--insecure”
python manage.py 127.0.0.1:8000 --insecure
解決辦法二:
在DEBUG為False時需要我們手動指定靜態資源目錄,並配置對映關係。 在正式環境下不建議採用django處理靜態資原始檔,這樣對應用伺服器壓力較大,也不好做cdn。可以用nginx,apache部署靜態資源。
(1)在全域性usrs.py中加下如下程式碼:
from django.conf import settings
if settings.DEBUG is False:
urlpatterns += patterns( ' ',
url(r'^static/(?P.*)$', 'django.views.static.serve', { 'document_root': settings.STATIC_ROOT,
}),
)
(2)修改settings.py中的設定:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
(3)然後執行以下命令,將靜態檔案全部複製到根目錄下static裡。
python manage.py collectstatic