Django urls.py中的name参数是什么作用?

5

我在研究朋友的项目时,在浏览urls.py文件时注意到了这个:

    url(r'^apply/$', contact.as_view(), name='careers_contact'),

我最近学习了类视图,除了最后一部分name='careers_contact'之外,所有内容都很清晰明了。我也无法在网上找到这个名称的含义。

有人可以解释一下这是什么,它的名称在哪里,以及它的作用是什么吗?

2个回答

11

url() name 参数

"这是什么?它在哪里?"

url() 是一个简单的函数,返回一个 django.core.urlresolvers.RegexURLPattern 对象,因此传递一个 name='careers_contact' 参数为该对象设置了一个 name。直到这个 url(...) 被放置到 URLconf 中,这些都不是真正相关的内容。

如果我们需要一个视图的URL,现在我们可以在模板中通过将name传递到{% url 'careers_contact' %}或在代码中使用reverse('careers_contact')来获取它,在后端这些函数将使用name来映射回正确的URL。

为什么我们需要它?

我们可以反转Python路径以获取URL(例如reverse(blog.views.home)),那么使用name有什么意义呢?

URL命名命名空间允许3件事情:

(点击链接以了解问题的示例以及命名/命名空间如何解决它)


1
感谢您的详细回复。 - ApathyBear

3
他们为什么会给URL添加命名空间,可能是为了实现反向命名空间URL。
例如,在某个模板中,您可能会看到类似以下内容的东西:
<a href="{% URL 'contact:careers_contact' %}"> Click me! </a>

我可以看到它与反向命名有关。但是为什么在urlconf中需要它呢?它有什么作用?我有点困惑。 - ApathyBear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接