問題描述:
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'
)