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>
。并出现入口页面。
这是我的函数,它显示条目或在条目不存在的情况下呈现错误页面:
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>
。并出现入口页面。