ChatGPT解决这个技术问题 Extra ChatGPT

Django TemplateSyntaxError - 'staticfiles' 不是注册的标签库

升级到 Django 3.0 后,我得到以下 TemplateSyntaxError

In template /Users/alasdair//myproject/myapp/templates/index.html, error at line 1
'staticfiles' is not a registered tag library. Must be one of: admin_list admin_modify admin_urls cache i18n l10n log static tz

这是我的模板

{% load staticfiles %}
<img src="{% static 'my_image.html' %}">

A
Alasdair

如果您的模板中有以下任何标签:

{% load staticfiles %}
{% load static from staticfiles %}
{% load admin_static %}

然后将其替换为:

{% load static %}

您必须进行此更改,因为 {% load staticfiles %}{% load admin_static %}deprecated in Django 2.1removed in Django 3.0


不幸的是,它不能与 Django==3.0.5djangorestframework==3.11.0django_rest_swagger==2.2.0 无缝协作。它需要一个 collectstatic 后跟一个替换。
g
gue

将静态文件注册到标签库

静态文件已更改为静态

您可以使用 settings.py 中的闲置代码进行注册

在您的模板设置中添加此代码:

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

注意你可以找到你没有的图书馆


T
Tonechas

尝试 {% load static %} 而不是 {% load staticfiles %}

如果 CSS 或任何其他文件的效果没有反映在您的模板中,那么还要在 settings.py 文件的末尾写下以下行

STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
VENV_PATH = os.path.dirname(BASE_DIR)
STATIC_ROOT = os.path.join(VENV_PATH, 'static_root')

添加 STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] 解决了这个问题。在我将静态文件目录添加到模板内的 DIRS 之前,它不起作用。非常感谢!
这应该被标记为正确答案。其他选项现在已过时。
CSS 部分是否也适用于 Windows 7 64 位?我尝试了同样的方法但给出了错误
C
Community

这对我使用 django 3.1.4 有效。

{% load static %}
<link rel"stylesheet" href = "{% static 'style.css' %}">

它为我工作


M
MoShamroukh

这对我有用,将 {% load static from staticfiles %} 替换为 {% load static %}

在哪里 :

转到您的虚拟环境“venv”/lip/python3.X/site-packages/leaflet/templates/leaflet/admin/widget.html 和目录中的所有 .HTML 文件


更改 site-packages 中的文件是个坏主意。在您的情况下,最好将 django-leaflet 升级到支持 Django 3.0+ 的较新版本
D
DonkeyKong

我的问题出在此处文档的第 4 步中:https://docs.djangoproject.com/en/3.2/howto/static-files/

“4. 将您的静态文件存储在应用程序中名为 static 的文件夹中。例如 my_app/static/my_app/example.jpg。”

一旦我纠正了我的目录结构以匹配所有工作。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅