我正在做一个django项目(教程),我在urls.py文件中遇到了这段代码。
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
我使用了这个文件并获得了正确的输出。但是,再次,为了进行实验,我从url函数中省略了“name”参数。只有两个参数,正则表达式和视图。像这样:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index),
]
然而,我得到了正确的输出。 那么,为什么有第三个参数,url函数中的name参数?
此外,urlpatterns列表仅包含1个元素,但在关闭列表之前我们使用“,”(逗号)。这是为什么?
答案 0 :(得分:3)
为什么有第三个参数,url函数中的name参数?
网址的name
是您可以反向它,即获取特定视图的网址。例如,您可以在生成内部链接时使用它。
在处理Django项目时,常见的需求是可以获取最终形式的URL,以嵌入生成的内容(视图和资产URL,向用户显示的URL等)或处理导航流程在服务器端(重定向等)
...
我们可用于获取URL的主要信息是负责处理URL的视图的标识(例如名称)。必须参与查找正确URL的其他信息是视图参数的类型(位置,关键字)和值。
让我们考虑一个例子:
想象一下,您正在建立一个网站,并且想要建立一个关于我们的网站"页。你也真的喜欢恐龙,所以你想想自己,如果我的网址都是恐龙名字,那么它会不会很酷?"所以你把这样的东西放到urls.py
:
url(r'^tyrannosaurus-rex$', views.about_us),
现在您要链接到该页面,可能在导航栏中。没问题。你在模板中放了这样的东西:
<a href="/tyrannosaurus-rex">About Us</a>
这样可行,但您已经复制了一些信息:您的关于我们的信息&#34;页面位于/tyrannosaurus-rex
。
出于某种原因,您获得的网站流量非常少,因此您需要聘请某人来查看您的搜索引擎优化。他们告诉您,您的网址应该与网页上的内容有关,而不是酷炫的恐龙名称。在这里,您关于我们&#34;关于我们&#34;页面应该是/about-us
。现在,您必须返回并更新两个位置中的代码:urls.py
和您的模板。现在想象一下,为你拥有的每一个链接做到这一点。
相反,如果你把
url(r'^tyrannosaurus-rex$', views.about_us, name='about_us'),
进入urls.py
,你可以使用the url
tag链接到它:
<a href="{% url 'about_us' %}">About Us</a>
Django将查看您想要的URL的名称,并使用urls.py
中的信息来确定链接应指向的内容。现在,当您更改链接结构时,只需执行一次:urls.py
。由于链接的名称无法更改,{% url 'about_us' %}
会自动生成新的正确链接。
此外,urlpatterns列表仅包含1个元素,但在关闭列表之前我们使用&#34;,&#34;(逗号)。那是为什么?
该列表包含一个逗号,即使只有一个元素,因为它稍微容易一些。 Python允许使用逗号,现在我们可以轻松地在此之前或之后添加条目,而无需更改它。