Django静态文件加载
在Django中静态文件的搜索顺序是:先搜索settings中STATICFILES_DIRS配置的目录,然后搜索每个APP下的static目录中的文件。
搜索顺序的配置是由默认配置STATICFILES_FINDERS来实现的:
STATICFILES_FINDERS:
[
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
{% load static %}和{% load staticfile %}
static和staticfile的区别是什么我还没搞清楚,在使用的时候碰到一种情况
之前一直是在根目录创建了static目录,然后配置STATICFILES_DIRS,所有的js、css、images都放在这一个目录下。后来想根据每个APP分开存储,就在每个APP下创建了static目录,但是js文件不能正常加载。查了好多文章后把{% load staticfile %}改成{% load static %},可以正常加载了。而且在django 2.1的官方文档中static-files看到的也是{% load static %}的方式。
在使用{% load static %}的过程中又发现了一个问题,在base.html文件头添加了{% load static %},但是通过{% extends "base.html" %}引入的html文件中使用{% static "js/xxxx.js" %}还是会出现不能识别static的错误。然后在{% extends "base.html" %}下面加上{% load static %}就可以了。在网上查了以后,发现很多人都有这样的疑问。最后又找到一种解决方式:
在settings文件中TEMPLATES配置中增加
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, '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', ], # 在此处添加以后就不用在每一个html中去使用{% load static %} 'builtins': [ # 'django.contrib.staticfiles.templatetags.staticfiles', 'django.templatetags.static' ], }, },]
推荐阅读:苹果7p有什么颜色
相关阅读
车品网版权与免责声明:
一、凡本站中注明“来源:车品网”的所有文字、图片和音视频,版权均属车品网所有,转载时必须注明“来源:车品网”,并附上原文链接。
二、凡来源非车品网的(作品)只代表本网传播该消息,并不代表赞同其观点。
如因作品内容、版权和其它问题需要同本网联系的,请在见网后30日内进行联系。