Django 标签未注册解决办法 Invalid block tag on line 9: 'ifequal'. Did you forget to register or load this tag?

发布时间 2023-08-11 11:17:06作者: 白灰

 

这是一个常见问题,但不要担心!一旦您了解了导致模板标记错误的原因,无论是拼写错误、语法还是忘记加载库,就可以轻松修复它。

Django 中的标签是什么?

Django 中的标签为 Django 模板添加了特殊功能,允许您在模板中执行操作。例如,使用标签,您可以以特定格式显示数据、循环访问上下文变量中的项目、在模板中包含其他模板等。

Django 标签是使用特定的语法编写的。它们被大括号和百分号的组合包围,如下所示:{% ... %}。 下面是一个 Django 内置标签的示例,用于遍历列表或字典中的项目:{% 表示项目 %} 中的项目

这些标签可以在 Django 模板文件中使用,就像在其他.html文件中一样。

Django 带有几个内置的模板标签,你可以开箱即用 - 因为这就是 Django 的目的。此外,Django 还为您提供了创建自己的自定义标签以满足您特定的 Web 开发需求的功能。

下面是一个示例 Django 模板标签代码,它使用名为 的上下文变量名称 ,遍历每篇博客文章并在网页上显示它们的标题。articles

{% for blogpost in blogposts %} 
    <li>{{ blogpost.title }}</li>
{% endfor %}

基本上,这就是 Django 模板标签的工作方式。它们允许您向模板文件添加在普通.html文件中无法实现的额外功能。

现在,让我们看看导致 Django 中出现“您是否忘记注册或加载此标签”错误的常见原因是什么。

在 Django 中“你忘记注册或加载这个标签了吗”的原因

  1. 您忘记安装或导入所需的标记库。
  2. 在将自定义标记加载到模板中之前使用它们。
  3. 标签名称中的拼写错误:如果标签名称拼写错误,则可能会出现错误。
  4. 错过在更改 Django 代码后重新启动开发服务器。您可能正在加载包含代码错误的网站的缓存版本。

原因 1:忘记安装或导入所需的标记库

缺少标签库是 Django 模板中出现错误“您是否忘记注册或加载此标签”的常见原因之一。当您使用通过 pip 包管理器安装的第三方包加载的自定义模板标签时,会发生这种情况。因为该包没有安装在你的 Django 项目虚拟环境中,所以当你尝试使用尚未注册或加载的标签时,Django 会抛出错误。

 

如何修复错误

要修复使用通过 Pypi 包加载的自定义模板代码时出现的错误,您需要执行以下操作:

1. 在你的 Python Django 项目环境中安装模块

您可以使用 pip install package_name 命令安装模块。

pip install package_name
2. 将定义标签库的模块添加到INSTALLED_APPS设置中。

打开项目 settings.py 文件,并确保已将模块添加到INSTALLED_APPS列表中。 保存文件并重新启动开发服务器

这应该可以解决问题。

原因 2:在模板中加载自定义标记之前使用自定义标记

当你忘记在 Django 模板中加载标签库时,会导致“你忘记注册或加载这个标签了吗”错误。您可以注册标签库,但如果您忘记使用标签在模板中加载模板标签,则错误将持续存在。{% load ... %}

要在 Django 模板中使用自定义标签,您必须首先加载定义自定义标签的标签库。这可以使用模板文件顶部的 {% load library_name %} 标记来完成。该标签将库的名称作为参数,并指示 Django 加载它。加载后,您可以使用加载的库中定义的自定义标记。{% load ... %}

下面是有关如何在.html文件中加载自定义标记的示例语法:

{% load your_custom_tags_lib %}

如何修复错误

要修复与使用自定义标签而不在模板中加载自定义标签相关的“您是否忘记注册或加载此标签”错误,您只需在文件顶部添加 {% load ... %} 模板标签即可。

原因 3:标记名称中的拼写错误

当你拼错标签名称时,Django 会抛出“你忘记注册或加载这个标签了吗”错误。这是 Django 开发人员在尝试使用内置和自定义模板标签时犯的另一个常见错误。Django 总是会抛出异常,因为它无法从顶部加载的库中找到拼写错误的标签名称。

此外,请考虑区分大小写,因为内置和自定义标记名称区分大小写。因此,请务必确保您在模板中使用的标签名称与使用正确大小写的标签库中定义的标签名称匹配。

例如,如果您在标签库中将自定义标签定义为 ,则在模板中使用该标签时必须使用相同的拼写和大小写。如果你拼错了标签名称,比如使用My_Custom_Tag而不是my_custom_tag,Django 将无法找到标签,你会遇到“你忘记注册或加载这个标签了吗?”错误。这也适用于内置标签。加载为 For 的 for 标签将导致 Django 抛出“您是否忘记注册或加载此标签”异常。my_custom_tag

如何修复错误

为避免“您是否忘记注册或加载此标签?”问题,请确保您在模板中使用的标签名称与标签库中定义的标签名称(包括大小写)完全匹配。

原因 4:缺少重新启动 Django 开发服务器

在更改自定义标签库、Django 设置或安装加载模板标签的库后,缺少重新启动 Django 开发服务器可能会导致“您是否忘记注册或加载此标签?”错误。

当您对 Django 设置、Python 虚拟环境或自定义标记库进行更改时,必须重新启动开发服务器才能使这些更改生效。如果在进行更改后未重新启动开发服务器,则旧代码仍将使用(缓存),并且可能会再次遇到“您是否忘记注册或加载此标记?”错误。

如何修复错误

为了避免“你忘记注册或加载这个标签了吗?”错误,请确保在对 Django 项目进行更改后始终重新启动开发服务器。您可以通过在运行 Django 开发服务器的终端中使用 停止开发服务器,然后使用该命令再次启动它来执行此操作。CTRL + Cpython manage.py runserver

python manage.py runserver

 

这将确保您的更改已生效,并且您在开发服务器中使用最新的代码。

解决错误的步骤:“您是否忘记注册或加载此代码”

第 1 步。在 Django 项目中安装并导入标签库

检查标记库的安装和注册。确保你尝试使用的自定义标签库已经安装并注册到你的 Django 项目中。

标签库安装可以使用 pip 命令完成:

pip3 install pypi_package_name

标记库的注册应在项目文件的设置中完成。INSTALLED_APPSsettings.py

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",

    # new line
    'new_package_name',
]

第 2 步。确保使用正确的语法加载标记库

如果您使用的是自己的自定义标签,请确保使用正确的语法将它们加载到模板中:{% load tag_library %}

检查模板中的代码,并确保已使用模板顶部的标记来加载自定义标记库。此外,在加载标记库时指定标记库的正确名称。loadload

第 3 步。仔细检查标签名称的拼写

检查标签名称,并确保在模板中使用的标签名称与标签库中定义的标签名称(包括大小写)匹配。自定义标记区分大小写,因此请务必确保拼写和大小写正确。

通过仔细检查模板文件中的标记名称、拼写或大小写中的拼写错误来检查拼写错误。检查 Django 提供的行号以便于识别。拼写错误可能会导致“您是否忘记注册或加载此标记?”错误,因此确保您的代码正确非常重要。

第 4 步。重新启动开发服务器

重新启动开发服务器。确保在对 Django 项目进行更改后重新启动开发服务器,包括更改自定义标记库或 Django 设置。为此,您可以在运行开发的终端中停止开发服务器,然后使用该命令再次启动它。CTRL + Cpython manage.py runserver

通过执行这些步骤,您可以解决 Django 中的“您是否忘记注册或加载此标签?”错误。