/ / NoReverseMatch при рендиране на страница - django, python-3.x, django-templates, django-views, slug

NoReverseMatch при изобразяване на страницата - django, python-3.x, django-templates, django-views, slug

Изглежда знам къде е проблемът, тъй като мога да го заобиколя, но за да го заобиколя, трябва да жертвам функция, която наистина искам да запазя.

Ето съответния код в неработещо състояние:

{% if sections %}

{% for item in sections %}

<a class="sections" href="{% url "sections:generate" item.section.slug %}">{{ item.section.title }}</a>

{% for subsection in item.subsections %}

<p>{{ subsection.title }}</p>

{% endfor %}

{% endfor %}

{% else %}

<p>Error retrieving sections or no sections found</p>

{% endif %}

Проблемната част по-горе е в маркера за връзка. Позволете ми да обясня, като покажа свързания view.py:

def index(request):
sections = Section.objects.all()
context = {
"sections": [],
}

for section in sections:
context.get("sections").append(
{
"section": section,
"subsections": get_subsections(section),
}
)

return render(request=request, template_name="index.html", context=context)

И така, „секции“ е непоносим списък с елементи,съдържащ за всеки предмет речник с два записа. Един, "раздел" и един "подраздел". Има много подсекции за всеки раздел, това е, което наистина искам да изпълня.

Обикновено, когато не се занимавате с подраздели и просто повторението върху списък от секции работи добре. Кодът на шаблона за това ще изглежда нещо като:

{% for section in sections %}

<a href="{% url "sections:generate" section.slug %}">{{ section.title }}</a>

{% endfor %}

ЗАБЕЛЕЖКА! Кодът по-горе работи отлично! Но веднага щом добавям „секции“ като списък на речници и трябва да препратя слугата по item.section.slug страниците спират да се изобразяват.

Моля, консултирайте се.

Отговори:

1 за отговор № 1

Опитайте да използвате кортежи:

Изглед:

context["sections"] = [(section, tuple(get_subsections(section))) for section in sections]

Шаблон:

{% for section, subsections in sections %}
<a class="sections" href="{% url "sections:generate" section.slug %}">{{ section.title }}</a>
{% for subsection in subsections %}
<p>{{ subsection.title }}</p>
{% endfor %}
{% endfor %}