配置Django Admin,關於如何啟用請參考Django官方文檔《Activate the admin site》。但是我在配置過程中登錄http://example.com/admin后台時出現樣式表丟失的問題,比如說界面變成了這樣:
上網搜索了不少文檔,多是Apache環境下的解決方案,我配置的是Nginx服務器,所以根據Apache的解決提示進而摸索辦法,最終要解決這個問題我這里總結有3步(假設已經配置好admin登錄系統):
1. 修改settings.py中STATIC_ROOT為你的static靜態文件的物理路徑,比如說我靜態文件存放在/home/user/www/static中,首先創建www目錄下的static文件夾,最后修改settings.py中STATIC_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/

