报错django.template.exceptions.TemplateSyntaxError: ‘staticfiles’ is not a registered tag library. Mustbe one of:
admin_list
admin_modify
等内容
出现这个问题可能是使用之前2点几(如2.1)版本django的写法,换成使用3.几版本(如3.0.7)所导致。
解决办法:
指定staticfiles
settings.py 文件中TEMPLATES中的OPTIONS添加 如下代码
'libraries': {
'staticfiles': 'django.templatetags.static',
},
完整文件如下:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
'libraries': {
'staticfiles': 'django.templatetags.static',
},
},
},
]
以上就是解决步骤,以下是对TEMPLATES这一块内容的初步阅读,
根据官方文档和博客来说明一下这个setting模块的templates这部分:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
# ... some options here ...
},
},
]
BACKEND是实现Django模板后端接口的模板引擎类的一个点Python路径。内置的后端是django.template.backends.django.DjangoTemplates和 django.template.backends.jinja2.Jinja2。
由于大多数引擎都从文件加载模板,因此每个引擎的顶级配置包含两个常用设置:
DIRS 定义一个目录列表,引擎应在目录中按搜索顺序查找模板源文件。
APP_DIRS告知引擎是否应在已安装的应用程序中查找模板。每个后端为应在其模板中存储其应用程序的子目录定义一个常规名称。
虽然不常见,但可以使用不同的选项配置同一后端的多个实例。在这种情况下,您应该NAME为每个引擎定义一个唯一 的引擎。
OPTIONS 包含特定于后端的设置。
在内置后端中有
设置BACKEND以 'django.template.backends.django.DjangoTemplates’配置Django模板引擎。
如果APP_DIRS为True,则DjangoTemplates 引擎将在templates已安装的应用程序的子目录中查找模板。保留该通用名称是为了向后兼容。
‘libraries’:模板字典模块的标签字典和点分Python路径,以向模板引擎注册。这可用于添加新库或为现有库提供备用标签。例如:
OPTIONS={
'libraries': {
'myapp_tags': 'path.to.myapp.tags',
'admin.urls': 'django.contrib.admin.templatetags.admin_urls',
},
}
可以通过将相应的字典键传递给标签来加载库。{% load %}
以下是别的博客内容,有较为详细的加载静态文件介绍,这里我们引用与这块问题相关内容。
在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等。因此在DTL中加载静态文件是一个必须要解决的问题。在DTL中,使用static标签来加载静态文件。要使用static标签,首先需要{% load static %}
如果不想每次在模版中加载静态文件都使用load加载static标签,那么可以在settings.py中的TEMPLATES/OPTIONS添加’builtins’:[‘django.templatetags.static’],这样以后在模版中就可以直接使用static标签,而不用手动的load了。
注意: 位置不要添加错误了
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',
],
#添加在这个位置
'builtins' : [
'django.templatetags.static'
],
},
},
]