问题描述:
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'
)