您的位置: 华声热线 > 娱乐 > 正文

Django静态文件加载

2020-03-30 16:00:07来源:阅读:-

在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'            ],        },    },]


推荐阅读:苹果手表维修

滚动推荐
00:07Django静态文件加载
BACKEND: django.template.backends.d[详细]
42:18“新基建”场景下的Wi-SUN应用
近日,“新基建”横空出世,全民一片叫好。这个词并不是今天才叫起来[详细]
23:51黄河岸边输出“棕榈股份生态城镇模式
3月28日上午,作为棕榈股份生态城镇模式输出的重大项目,兰考黄河[详细]
30:57房地产科技时代,奇志科技无人机数据
中指研究院数据显示,1-2月累计,拿地前三名房企拿地总额较201[详细]
59:30全小程序入口集齐,你有没有找到呢?
如今,小程序也是变得很开放了,功能也是更加强,作为一个应用工具来讲,小[详细]
20:47APP应用的安全保护指南
随着移动应用使用率的大幅增长,其被攻击的风险也在增加。根据Gartne[详细]
42:55移动互联网十年:旧富未去,新贵已来
2009年,3G网络(第三代移动通信)开始大规模使用,手机可以上网,开[详细]