1. 程式人生 > >django DEBUG=False問題

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