Django, параметр имени в urlpatterns

Я следую учебнику, где мои 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...,
)

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

Нет. Это просто, что django дает вам возможность назвать ваши взгляды, если вам нужно ссылаться на них из вашего кода или ваших шаблонов. Это полезно и полезно, потому что вы избегаете URL-адресов жесткого кодирования вашего кода или внутри ваших шаблонов. Даже если вы измените фактический URL-адрес, вам не нужно ничего менять, потому что вы будете ссылаться на них по имени.

e.x с представлениями:

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

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

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

e.x. в шаблонах

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

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

38
ответ дан 10 окт. '12 в 15:06
источник