Django,urlpatterns中的name参数

48

我正在跟随一个教程,我的urlpatterns如下:

urlpatterns = patterns('',
    url(r'^passwords/$', PasswordListView.as_view(), name='passwords_api_root'),
    url(r'^passwords/(?P<id>[0-9]+)$', PasswordInstanceView.as_view(), name='passwords_api_instance'),
    ...other urls here...,
)

PasswordListViewPasswordInstanceView 应该是基于类的视图。 我无法弄清楚name参数的含义。它是传递给视图的默认参数吗?

1个回答

63
不是的。只是Django提供了给视图命名的选项,以便在需要从代码或模板引用它们时使用。这是有用且良好的实践,因为您可以避免在代码或模板中硬编码URL。即使您更改实际的URL,也不必更改其他任何内容,因为您将按名称引用它们。 例如,使用视图:
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse #this is deprecated in django 2.0+
from django.urls import reverse #use this for django 2.0+

def myview(request):
    passwords_url = reverse('passwords_api_root')  # this returns the string `/passwords/`
    return HttpResponseRedirect(passwords_url)

更多内容在这里

例如,在模板中使用:

<p>Please go <a href="{% url 'passwords_api_root' %}">here</a></p>

更多内容在这里


2
在views.py中,resolve_url('passwords_api_root',args) 对我起了作用。 - BeatriceThalo

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