2012-10-07 25 views
4

我在將應用程序部署到生產服務器時遇到了一些問題。如果我在settings.py當DEBUG爲False時沒有靜態文件

DEBUG = True 
TEMPLATE_DEBUG = DEBUG 

已經設置然後一切工作正常,但如果我更改設置:

DEBUG = False 
TEMPLATE_DEBUG = DEBUG 

然後我的應用程序被打破了。我沒有看到靜態文件(js,css,...),並且在管理面板中我無法添加/編輯我的註冊模型。 你有什麼建議我該如何解決這個問題?

我envoirment:

  • 的Python 2.7.3
  • 的Django 1.4.1
  • Nginx的1.2.3
  • uwsgi 1.3

回答

10

你應該閱讀:Serving static files in production.

至少這聽起來像你依靠t他從contrib.staticfiles助手視圖staticfiles_urlpatterns()這是僅用於開發:

如果DEBUG爲True這隻會工作。

這是因爲這種觀點非常低效,可能不安全。 這隻適用於本地開發,不應該在生產中使用 。

+0

謝謝你的提示。更改後我的主站點正確加載所有靜態文件,但仍然存在管理面板的問題。如果我禁用DEBUG模式,那麼我在管理網站註冊的模型無法正常工作。我看到模型名稱,但添加/編輯動作不可見。你有什麼想法我該如何解決這個問題? – Grzegorz

+0

我想它與你的'STATIC_ROOT'和'ADMIN_MEDIA_PREFIX'設置有關。你讀過這個:https://docs.djangoproject.com/en/1.4/releases/1.4/#django-contrib-admin? – arie

+0

我看到這個文檔,但看起來這不是一個理由。我試圖就這個問題提出另一個問題。再次感謝您對靜態文件的建議。 – Grzegorz

0

我也有這個問題,我解決了它。

試試看

settings.py中

DEBUG = False 

再加入

DEBUG404 = True 
ALLOWED_HOSTS = ['*'] # it works but not secure, so use 

ALLOWED_HOSTS = ['localhost', 'IP adrs'] #if you are running locally, then run with python manage.py runserver --insecure.You can give your webserver here. 

然後在urls.py添加

import os 
if settings.DEBUG404: 
    urlpatterns += patterns('', 
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', 
    {'document_root': os.path.join(os.path.dirname(__file__), 'static')}), 
    ) 
相關問題