Недопустимый блочный тег в строке 126: 'set', ожидалось 'empty' или 'endfor'. Вы забыли зарегистрировать или загрузить этот тег?
Я хочу использовать {% set ... }, но у него есть проблема - django.template.exceptions.TemplateSyntaxError: Недопустимый блочный тег в строке 126: 'set', ожидается 'empty' или 'endfor'. Вы забыли зарегистрировать или загрузить этот тег?
что мне делать?
html файл
<div class="carousel-inner">
{% for knowledge in knowledges %}
{% set count = 0 %}
{% for photo in photo01s %}
{% if photo.category01 == knowledge %}
{% set count = count + 1 %}
<div class="carousel-item {% if forloop.first %}active{% endif %}">
<div class="row">
<div class="card" style="background-image: url('{{ photo.image01.url }}');"></div>
</div>
</div>
{% endif %}
{% endfor %}
{% endfor %}
</div>
models.py
class Knowledge(models.Model):
name01 = models.CharField(max_length=100, null=False, blank=False)
def __str__(self):
return self.name01
class Photo01(models.Model):
category01 = models.ForeignKey(Knowledge, on_delete=models.SET_NULL, null=True, blank=True)
image01 = models.ImageField(null=False, blank=False)
description01 = models.TextField()
title01 = models.CharField(max_length=100, default='')
def __str__(self):
return self.title01
views.py
def knowledge01(request):
knowledges = Knowledge.objects.all()
photo01s = Photo01.objects.all()
context = {'knowledges': knowledges, 'photo01s': photo01s}
return render(request, 'photos/knowledge01.html', context)
Я пробовал несколько способов, но ничего не получается.
Не выполняйте "join" в шаблоне. Шаблоны должны реализовывать логику рендеринга, а не бизнес-логику, а шаблоны, как известно, медленные, и поэтому это будет работать не очень эффективно.
Во-вторых, ваш шаблон не использует count
anyware, поэтому установка этой переменной также не имеет особого смысла. Я предполагаю, что шаблон был сгенерирован чатботом, поскольку чатботы часто выполняют назначение переменных в шаблоне и, что еще хуже, "придумывают" несуществующие теги шаблона.
Мы можем предварительно получить изображения в представлении:
def knowledge01(request):
knowledges = Knowledge.objects.prefetch_related('photo01_set')
context = {'knowledges': knowledges}
return render(request, 'photos/knowledge01.html', context)
<div class="carousel-inner">
{% for knowledge in knowledges %}
{% for photo in knowledge.photo01_set.all %}
<div class="carousel-item {% if forloop.first %}active{% endif %}">
<div class="row">
<div class="card" style="background-image: url('{{ photo.image01.url }}');"></div>
</div>
</div>
{% endfor %}
{% endfor %}
</div>
Note: Specifying
null=False
[Django-doc] is not necessary: fields are by default not NULLable.
Note: Specifying
blank=False
[Django-doc] is not necessary: fields are by default not blank and thus are required by a form.