解決Django+nginx時Admin頁面樣式丟失問題和模板丟失問題


比如說界面變成了這樣:

Django Admin管理界面樣式丟失

解決辦法:

1、在服務器上打開python,然后imort django ,print django.__file__查看django包的目錄路徑,然后在settings.py的路徑里加上admin的static文件的路徑

STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static').replace('\\', '/'),
os.path.join(django.__file__.rstrip('__init__.py'), 'contrib/admin/static/admin').replace('\\', '/'),
)

2、修改settings.py中STATIC_ROOT為你的static靜態文件的物理路徑,比如說我靜態文件存放在 /opt/jira_platform/static中,最后修改settings.py中STATIC_ROOT指向 /opt/jira_platform/static。這個目錄是服務器上用來收集靜態文件的目錄

3、在服務器上運行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)。

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

location /static {
alias /opt/jira_platform/static; # 這個路徑需要與第二步設置的路徑一致
}

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

uwsgi reload
nginx -s reload

 

然后就可以成功了

 

二、模板丟失問題

由於nginx運行后代管了靜態目錄,所以如果后台有nginx進程時,修改的一些文件無法正常顯示,頁面展示的都是緩存,此時需要重啟nginx

如果不重啟nginx,單純修改django項目並啟動django進程,可能會遇到報錯或靜態文件和模板文件丟失的問題


免責聲明!

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



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