【Python】解決Django Admin管理界面樣式表(CSS Style)丟失問題


配置Django Admin,關於如何啟用請參考Django官方文檔《Activate the admin site》。但是我在配置過程中登錄http://example.com/admin后台時出現樣式表丟失的問題,比如說界面變成了這樣:

Django Admin管理界面樣式丟失

上網搜索了不少文檔,多是Apache環境下的解決方案,我配置的是Nginx服務器,所以根據Apache的解決提示進而摸索辦法,最終要解決這個問題我這里總結有3步(假設已經配置好admin登錄系統):

 

1. 修改settings.pySTATIC_ROOT為你的static靜態文件的物理路徑,比如說我靜態文件存放在/home/user/www/static中,首先創建www目錄下的static文件夾,最后修改settings.pySTATIC_ROOT指向/home/user/www/static

2. 運行python manage.py collectstatic命令,這將從Django資源包中復制必須的靜態文件到STATIC_ROOT指示的static文件夾中,這其中包括admin界面所必須的樣式表(style)、圖片(image)及腳本(js)等。

這里提示一下,假如不做第1步的話,直接運行這個命令會導致如下的錯誤提示(最后幾行):

  File "/usr/lib/python2.7/dist-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 41, in __init__
    self.storage = get_storage_class(settings.STATICFILES_STORAGE)()
  File "/usr/lib/python2.7/dist-packages/django/contrib/staticfiles/storage.py", line 23, in __init__
    raise ImproperlyConfigured("You're using the staticfiles app "
django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting.

其實已經提示需要配置STATIC_ROOT文件了(You’re using the staticfiles app without having set the STATIC_ROOT setting)。

3. 修改Nginx配置,Debian系統下/etc/nginx/nginx.conf或者/etc/nginx/sites-enabled/里面的配置文件,在server節中添加如下內容(請根據實際情況修改):

server {
  # ... 其余內容略

  location /static {
      root /home/user/www;
  }

}

此處不修改的話,我測試下來結果貌似默認處理會交由Django,但是依舊會由Django提示Page not found (404)。

完成上面三步后,重新加載相應設置:

invoke-rc.d uwsgi reload
nginx -s reload

好了,基本上問題算是解決了,如果有什么不當的地方歡迎指出。

 

參考資料:

http://wangye.org/blog/archives/572/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM