django模板中通过<a>标签链接时第二个url参数的操作原理

The principle of operation of second url argument when linking via <a> tag in django template

这是我的函数,它显示条目或在条目不存在的情况下呈现错误页面:

def entry(request, title):
    if title not in util.list_entries():
        return render(request, "encyclopedia/error.html", {
            "error": "Page Not Found",
            "query": title
        })
    else:
        return render(request, "encyclopedia/entry.html", {
            "entry": markdown2.markdown(util.get_entry(title)),
            "title": title
        })

这是路径:

path("wiki/<str:title>", views.entry, name="entry")

这是我的模板,带有 link 到入口页面:

{% block body %}
    <h1>All Pages</h1>

    <ul>
        {% for entry in entries %}
            <li><a href="{% url 'entry' entry %}"> {{ entry }} </a></li>
        {% endfor %}
    </ul>

{% endblock %}

为了更好的理解,我想知道模板中URL(<a href="{% url 'entry' entry %}">)的第二个参数(条目)是如何工作的。它会首先传递到路径(其中 <str:title>),还是传递给函数的第二个参数(传递给 def entry(request, title) 中的 title)?

据我正确理解,url 中的第二个参数(在我的例子中是 条目 )始终与上下文相关(与 entry 函数 "entry": markdown2.markdown(util.get_entry(title)))。在上面的 HTML 模板中,url 的第一个参数(<a href="{% url 'entry' entry %}"> 中的第一个 entry)告诉我们在 [=] 中找到名称“entry” 13=]。找到后,这个路径会link到函数的views.entry这里,进行函数内部的进一步操作。如您所见,此路径(此路由)需要一个附加值 <str:title>。 url 中的第二个 entry 参数告诉我们将上下文字典中 entry 的值传递给 <str:title>。并出现入口页面。