天天看點

進入django的admin網頁,沒有樣式,缺少樣式檔案.

問題描述:

django admin沒有樣式

admin管理頁面找不到base.css,dashboard.css檔案

解決辦法:

方法一

在settings檔案中設定STATIC_ROOT目錄,該目錄不能在STATICFILES_DIRS中.

然後,執行指令

python manage.py collectstatic
           

執行後,django會将STATICFILES_DIRS下的所有檔案以及admin所需要用到的js,css,image檔案全都放到STATIC_ROOT目錄下.

例如, 像下面這樣寫:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'collectstatic')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
           

簡單描述一下這幾個變量的意思

STATIC_URL: 當通路什麼樣的網址時, 按照通路靜态檔案的方式去查找檔案.

STATICFILES_DIRS: 當通路靜态檔案是, 會在每個app中的static目錄中查找, 然後再從STATICFILES_DIRS設定的路徑清單中逐一查找.

STATIC_ROOT: 當執行

python manage.py collectstatic

時, 收集的靜态檔案放在該目錄下.

更多可參考: http://python.usyiyi.cn/translate/django_182/ref/settings.html

然後, 你還需要配置一下urls.py檔案

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
           

這種方法隻适合在開發環境中使用.

等項目上線時, 建議采用下面任一一種方法:

1:使用nginx代理, 目的是不走django,性能會更優

2:将靜态檔案存儲在oss中, 然後前面再放個cdn, 效率最好.

方法二

接下來提到的方法,僅僅是猜測,未經測試.

2017年10月5日測試, 接下來将要提到的方法無效.

在settings中添加

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder'
)