Использование расширения Jinga2 Loop Control
Я хотел бы выйти из цикла for в шаблоне. Я понимаю, что это невозможно в DTL, но согласно документации это возможно при использовании Jinja2 (с расширением Loop Control) в качестве шаблонизатора. Поэтому я обновил свой settings.py, включив в него
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [os.path.join(BASE_DIR, 'templates/jinja2')],
'APP_DIRS': True,
'OPTIONS': {
'environment': 'project4.jinja2.environment'},
},
Я определяю среду Jinja в jinja2.py:
from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
def environment(**options):
env = Environment(**options, extensions=['jinja2.ext.loopcontrols'])
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
В моем файле views.py указывается на файл шаблона jinja:
return render(request, "jinja2/index.html", {
"pages": page_obj,
"liked": liked_posts
})
Но когда я пытаюсь использовать оператор break
в моем цикле, как например:
{% for like in liked %}
{% if like.liked_post == page %}
<span><button class="btn btn-secondary" id="unlike">Unlike</button></span>
{% break %}
{% else %}
<span><button class="btn btn-secondary" id="unlike">Like</button></span>
{% endif %}
{% endfor %}
Я получаю следующую ошибку:
Invalid block tag on line 30: 'break', expected 'elif', 'else' or 'endif'. Did you forget to register or load this tag?
Что я упускаю? Должно ли окружение Jinja2 быть создано в моем views.py?