我想在模板中使用静态标签,如下所示:
<img src="{% static "img/test.jpg" %}">
我发现这需要我把
{% load static %}
在每个模板文件的开头。由于我在任何地方都使用它,我希望它是一个全局可用的标签,所以我不需要放置 {% load static %} 来使用它。
在我的设置中,我确实有:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.static',
)
我看到了这两个问题:使 django 静态标签全局可用和默认为所有视图加载 Django 模板标签库尽管似乎都没有回答这个问题。 在前者中,问题不清楚,在后者中,当我尝试使用时,我会收到错误:
from django.template.loader import add_to_builtins
add_to_builtins('django.core.context_processors.static')
也许我没有把它放在正确的位置,或者它已经是核心的一部分,所以不起作用?
如何自动将静态标签添加到所有模板文件中,而无需为每个文件显式加载静态标签?
我认为很多答案都忘记了需要将代码放在哪里。好吧,让我首先告诉您,您可以使用以下代码来完成工作:
from django.template.loader import add_to_builtins
add_to_builtins('django.templatetags.static')
现在把它放在你的主urls.py
文件中。这对我有用。
将django.core.context_processors.static
替换为django.templatetags.static
:
>>> from django.template import Context,Template
>>> from django.template.loader import add_to_builtins
>>> add_to_builtins('django.templatetags.static')
>>> Template('{% static "img/test.jpg" %}').render(Context())
'/static/img/test.jpg'
顺便说一句,您的代码有一个错字:将add_to_bultins
替换为add_to_builtins
。
答案很旧,在 Django 3 中不起作用
在 settings.py 在模板下添加"django.templatetags.static"->选项->内置
因此,使用基本的默认设置,它应如下所示:
TEMPLATES = [
{
'BACKEND': ...,
'DIRS': ...,
'OPTIONS': {
'context_processors': [
...
],
'builtins': [
'django.templatetags.static',
],
},
},
]
感谢博客:https://chris-lamb.co.uk/posts/importerror-cannot-import-name-add_to_builtins-under-django-19