Джанго, параметр имени в urlpatterns

Я следую учебнику, в котором мои URL-адреса:

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...,
)

Предполагается, что PasswordListView и PasswordInstanceView являются представлениями на основе классов. Я не мог понять значение параметра name. Это параметр по умолчанию, переданный представлению?


person Leonardo    schedule 10.10.2012    source источник


Ответы (1)


Нет. Просто 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>

Подробнее здесь.

person rantanplan    schedule 10.10.2012
comment
в views.py у меня работало resolve_url('passwords_api_root',args) - person BeatriceThalo; 10.10.2016