【问题标题】:TemplateSyntaxError at /messages/inbox/ 'account_tags' is not a registered tag library. Must be one of:/messages/inbox/ 'account_tags' 处的 TemplateSyntaxError 不是已注册的标签库。必须是以下之一:
【发布时间】:2021-07-20 23:36:26
【问题描述】:

我正在使用 pinax_messages 和 pinax_templates。

我无法访问该页面:http://127.0.0.1:8000/messages/inbox/

我收到一个奇怪的错误,不明白问题所在。

我收到错误:

TemplateSyntaxError at /messages/inbox/
'account_tags' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
bootstrap
cache
crispy_forms_field
crispy_forms_filters
crispy_forms_tags
crispy_forms_utils
i18n
l10n
log
pinax_messages_tags
static
tz

我在谷歌上找不到任何帮助。

{% load i18n %}
{% load account_tags %}


<ul class="account-bar">
    {% if request.user.is_authenticated %}
        <li class="user">
            <i class="fas fa-user"></i>
            {% user_display request.user %}
        </li>
        <li class="settings">
            <a href="{% url 'account_settings' %}">
                <i class="fas fa-cog"></i>
                {% trans "Settings" %}
            </a>
        </li>
        <li class="logout">
            <a id="account_logout" href="{% url 'account_logout' %}">
                <i class="fas fa-power-off"></i>
                {% trans "Log out" %}
            </a>
        </li>
    {% else %}
        <li><a href="{% url 'account_login' %}">{% trans "Log in" %}</a></li>
        {% if ACCOUNT_OPEN_SIGNUP %}
            <li><a href="{% url 'account_signup' %}">{% trans "Sign up" %}</a></li>
        {% endif %}
    {% endif %}
</ul>

<form id="accountLogOutForm" style="display: none;" action="{% url 'account_logout' %}" method="POST">
    {% csrf_token %}
</form>

【问题讨论】:

  • 您正在尝试在模板中加载account_tags,例如{% load account_tags %} 。但是这个标签库没有注册
  • 我应该如何纠正它?

标签: django pinax


【解决方案1】:

您正在尝试在模板中加载 account_tags,例如 {% load account_tags %} 。但是这个标签库没有注册

你必须在INSTALLED_APPS中添加account_tagsapp

或将其添加到您的settings.py 中的

TEMPLATES = [
    {   
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            ...
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
            ],
            'libraries': {
                'account_tags': 'myapp.templatetags.account_tags',
            },
        },
    },
]

【讨论】:

  • 指定的模板库无效。尝试加载“myapp.templatetags.account_tags”时引发 ImportError:没有名为“myapp”的模块
  • @sly_Chandan, my_aap 就是例子。您的文件 account_tags.py 的确切位置在哪里?
  • Lib\site-packages\pinax\templates\templates\
  • @sly_Chandan,你试过删除{% load account_tags %}吗?
  • 是的,因为行 {% user_display request.user %} 导致代码中断
【解决方案2】:

我认为您正在使用 django-user-accounts ,所以我认为您没有使用 pip 安装 django-user-accounts ,或者您可能忘记将其注册到设置文件中

INSTALLED_APPS = (
    # ...
    "account",
    # ...
)

还有模板上下文处理器

TEMPLATE_CONTEXT_PROCESSORS = [
    ...
    "account.context_processors.account",
    ...
]

还有中间件

MIDDLEWARE_CLASSES = [
    ...
    "account.middleware.LocaleMiddleware",
    "account.middleware.TimezoneMiddleware",
    ...
]

【讨论】:

  • 我已经尝试过这个解决方案。我收到以下消息没有这样的表 account_account。它不起作用
  • 你应该用 migrate 命令同步数据库
  • 我现在收到以下错误:OperationalError at /messages/inbox/ no such table: account_account
  • 我现在有 2 个帐户 url ....path(r"^accounts/"、include("django.contrib.auth.urls")) 和 url(r"^account/" , include("account.urls")), 为什么我有 2 个帐户 url?什么是正确的保留?
  • 尤里卡!这一步就是问题所在。出色的工作伙伴。谢谢!
最近更新 更多