'utility_tags' не является зарегистрированной библиотекой тегов - PullRequest
0 голосов
/ 21 января 2020

Когда я применял библиотеку перевода i18n к своему проекту, я столкнулся со следующей ошибкой:

django .template.exceptions.TemplateSyntaxError: 'utility_tags' не является зарегистрированным тегом библиотека.

Но я не могу найти официальную документацию и форум по этой проблеме. Мой код здесь:

поиск. html

{% extends "base.html" %}
{% load i18n utility_tags %} <-- just pay attention to this

{% block content %}
    <h2>{% trans "Search" %}</h2>
    <form method="get" action="{{ request.path }}">
        <div class="well clearfix">
            {{ form.as_p }}
            <p class="pull-right"><input type="submit" value="Search" class="btn btn-primary"></p>
        </div>
    </form>

    {% if query %}
        <h3>{% trans "Results" %}</h3>

        {% for result in page.object_list %}
        <p><a href="{{ result.object.get_url_path }}">{{ result.object.title }}</a></p>
        {% empty %}
        <p>{% trans "No results found." %}</p>
        {% endfor %}

        {% if page.has_previous or page.has_next %}
        <nav>
            <ul class="pager">
                <li class="previous">
                    {% if page.has_previous %}
                    <a href="{% modify_query page=page.previous_page_number %}">
                    {% endif %}
                    <span aria-hidden="true">&laquo;</span>
                    {% if page.has_previous %}</a>{% endif %}
                </li>
                {% for num in page.paginator.page_range %}
                <li>{% if num = page.number %} class="selected"{% endif %}>
                    <a href="{% modify_query page=num %}"> {{ num }}</a>
                </li>
                {% endfor %}
                <li class="next">
                    {% if page.has_next %}
                    <a href="{% modify_query page=page.next_page_number %}">
                    {% endif %}
                        <span aria-hidden="true">&raquo;</span>
                    {% if page.has_next %}</a>{% endif %}
                </li>
            </ul>
        </nav>
        {% endif %}
    {% endif %}
{% endblock %}

settings.py

# Application definition

INSTALLED_APPS = [
    ...
    'haystack',
]


# Internationalization
# https://docs.djangoproject.com/en/3.0/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


LANGUAGE_CODE = "en-us"

LANGUAGES = (
    ("en-us", "US English"),
    ("es", "Español"),
    ("fr", "Français"),
    ("zh", "繁體中文"),
)

HAYSTACK_CONNECTIONS = {
    'default_en': dict(
        ENGINE='search.multilingual_whoosh_backend.' 'MultilingualWhooshEngine',
        PATH=os.path.join(BASE_DIR, 'tmp/whoosh_index_en'
    )),
    'default_es': dict(
        ENGINE='search.multilingual_whoosh_backend.' 'MultilingualWhooshEngine',
        PATH=os.path.join(BASE_DIR, 'tmp/whoosh_index_es'
    )),
    'default_fr': dict(
        ENGINE='search.multilingual_whoosh_backend.' 'MultilingualWhooshEngine',
        PATH=os.path.join(BASE_DIR, 'tmp/whoosh_index_fr'
    )),
    'default_zh': dict(
        ENGINE='search.multilingual_whoosh_backend.' 'MultilingualWhooshEngine',
        PATH=os.path.join(BASE_DIR, 'tmp/whoosh_index_zh'
    )),
}

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'),
    },
}

needs.txt

asgiref==3.2.3
astroid==2.3.3
beautifulsoup4==4.8.2
colorama==0.4.3
Django==2.2.9
django-crispy-forms==1.8.1
django-haystack==2.8.1
html5lib==1.0.1
isort==4.3.21
lazy-object-proxy==1.4.3
mccabe==0.6.1
Pillow==6.2.1
psycopg2-binary==2.8.4
pylint==2.4.4
PyPDF2==1.26.0
pytz==2019.3
reportlab==3.5.32
six==1.13.0
soupsieve==1.9.5
sqlparse==0.3.0
typed-ast==1.4.0
webencodings==0.5.1
Whoosh==2.7.4
wrapt==1.11.2
xhtml2pdf==0.2.3

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 02 марта 2020

Вы можете загрузить только один тег шаблона на строку.

Если вы хотите загрузить тег шаблона i18n и utility_tags, вы должны сделать это следующим образом:

search. html

{% extends "base.html" %}
{% load i18n %}
{% load utility_tags %}

{% block content %}
...

Кроме того, шаблон тега utility_tags должен существовать в следующей структуре:

polls/
    __init__.py
    models.py
    templatetags/
        __init__.py
        utility_tags.py
    views.py

Вы можете увидеть, как создавать собственные теги в официальная документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...