Django设置DEBUG为False时,'django.contrib.staticfiles'
会关闭,即Django不会自动搜索静态文件,静态文件不能加载导致的问题有两个:
1.页面排版不正常,即css文件不能正常加载;
2.通过url不能访问静态文件,如图片等。
这里大致先说一下STATIC_ROOT、STATICFILES_DIR的不同之处:
1.STATICFILES_DIRS是静态文件路径;
2.STATIC_ROOT用来存储使用python manage.py collectstatic
命令收集起来的静态文件。
可以使用Django来处理静态文件。
1.在settings.py中指定STATIC_ROOT, STATICFILES_DIRS等变量,例如:
# 默认 STATIC_URL = '/static/' # 项目根目录下的static文件夹 STATIC_ROOT = os.path.join(BASE_DIR, 'static') # 不能和STATIC_ROOT路径相同 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'zhitu/static'), ] MEDIA_URL = '/media/' # 项目根目录下的media文件夹 MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
2.在settings.py
中配置项目的模版文件路径:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 指定模版文件路径 'DIRS': [os.path.join(BASE_DIR, 'apps', 'templates'),], # 设置为False, 不再去每个app下找templates文件,会在DIRS指定的路径寻找 'APP_DIRS': False, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
3.在urls.py
中添加
from django.views import static from django.conf import settings urlpatterns = [ url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT }, name='static'), ]