渲染页面时NoReverseMatch

NoReverseMatch when rendering page

我似乎知道问题出在哪里,因为我可以绕过它,但为了绕过它,我不得不牺牲一个我真正想保留的功能。

非工作状态下的相关代码如下:

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

上面的问题部分在link标签中。让我通过显示相关的 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)

因此,'sections' 是一个可迭代的项目列表,每个项目都包含一个包含两个条目的字典。一个 'section' 和一个 'subsection'。每个部分都有多个小节,这才是我真正想要完成的。

通常,当不理会小节并简单地遍历节列表时就可以了。其模板代码类似于:

{% for section in sections %}

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

{% endfor %} 

注意!上面的代码工作得很好!但是,一旦我将 'sections' 添加为字典列表并且必须通过 item.section.slug 引用 slug,页面就会停止呈现。

请指教

尝试使用元组:

查看:

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