2017-01-20 45 views
0

Кажется, я знаю, где проблема, так как я могу обойти ее, но чтобы обойти ее, я должен пожертвовать той функцией, которую я действительно хочу сохранить.NoReverseMatch при рендеринге страницы

Вот соответствующий код в нерабочем состоянии:

{% 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 %} 

ПРИМЕЧАНИЕ! Код выше работает просто отлично! Но как только я добавляю «разделы» в список словарей и должен ссылаться на slug по item.section.slug, страницы останавливают рендеринг.

Просьба сообщить.

+0

Что печатается, если у вас нет URL-адрес метки, чтобы вызвать исключение? (Идеально добавить 'item.section.slug', который будет отображаться также) – yummies

ответ

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 %} 
+0

Это сработало, спасибо вам, сэр. –

 Смежные вопросы

  • Нет связанных вопросов^_^