小技巧:admin后台样式丢失的处理办法

问题描述:

登录django admin没有 css 和 js 样式 

django admin后台css样式丢失

缺少图片
 

解决办法:
在settings文件中设置 STATIC_ROOT 目录,该目录不能在 STATICFILES_DIRS 中:

djangoblog/settings.py

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

在这之前,记得在与 djangoblog 文件夹同一目录下新建 static 文件夹。

简单描述一下这几个变量的意思 

  • STATIC_URL:当访问什么样的网址时, 按照访问静态文件的方式去查找文件。
  • STATICFILES_DIRS:当访问静态文件是, 会在每个app中的static目录中查找, 然后再从STATICFILES_DIRS设置的路径列表中逐一查找。
  • STATIC_ROOT:当执行 python manage.py collectstatic时, 收集的静态文件放在该目录下。

然后,执行命令

python manage.py collectstatic

执行后,django会将STATICFILES_DIRS下的所有文件以及admin所需要用到的js,css,image文件全都放到 STATIC_ROOT 目录下。

然后, 你还需要配置一下 urls.py 文件

djangoblog/urls.py

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

urlpatterns = [
    # 其他的 path ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

然后刷新http://127.0.0.1:8000/admin,可以看到样式都正常了。