url()中第三个参数名称的用途是什么?为什么urlpatterns列表中只有一个逗号而且只有一个元素?

时间:2016-02-01 05:06:34

标签: python django url

我正在做一个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个元素,但在关闭列表之前我们使用“,”(逗号)。这是为什么?

1 个答案:

答案 0 :(得分:3)

  

为什么有第三个参数,url函数中的name参数?

网址的name是您可以反向它,即获取特定视图的网址。例如,您可以在生成内部链接时使用它。

来自the documentation

  

在处理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允许使用逗号,现在我们可以轻松地在此之前或之后添加条目,而无需更改它。