[英]How does {% url 'x' y %} function in Django?
在Django教程( https://docs.djangoproject.com/en/1.11/intro/tutorial03/ )中,建议不要在模板中“硬编码” URL。 例如,以下代码段:
<ul>
{% for question in latest_question_list %}
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
应替换为:
<ul>
{% for question in latest_question_list %}
<li><a href="{% url 'detail' question.id %}/">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
但是,本教程不能很好地解释此处实际发生的情况。 第一个示例很清楚, {{ question.id }}
将采用问题ID的值并将其放置在url中。 但是在第二个片段中,我们使用了关键字(是否称为关键字?) url
并且还使用了'detail'
做些什么,虽然我怀疑它与此有关,但我不确定它的来源:
urlpatterns = [
...
url(r'^(?P<question_id>[0-9]+)/$', views.detail, name = 'detail'),
]
因此,我的问题是{% url 'detail' question.id %}
什么?
您需要了解url的namespace
。 我试图解释。
url(r'^(?P<question_id>[0-9]+)/detail/$', views.detail, name = 'detail'),
在urls
您可以给urls
命名,例如name = 'detail'
。 因此,无论何时您说{% url 'detail' %}
。 它生成一个URL,该URL尝试获取与名称detail
关联的视图。
但是很多时候我们没有固定的URL,例如r'^page/detail/view/$'
但是我们还有一些url_kwarg
或url variable
需要传递。 在这里,我们的价值传递给变量question_id
使用URL question.id
。
{% url 'detail' question.id %}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.