2012-10-10 12 views
30

Obserwuję tutorial gdzie są moi urlpatterns:Django, parametr nazwa tam wzorce

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 i PasswordInstanceView mają być poglądy oparte klasy. Nie mogłem odczytać znaczenia parametru nazwa. Czy jest to parametr domyślny przekazywany do widoku?

Odpowiedz

39

Nie. Po prostu django daje możliwość nazywania swoich widoków na wypadek, gdybyś musiał się do nich odnieść z kodu lub szablonów. Jest to przydatna i dobra praktyka, ponieważ unikasz adresów URL do kodowania twardego kodu lub wewnątrz szablonów. Nawet jeśli zmienisz rzeczywisty URL, nie musisz niczego zmieniać, ponieważ będziesz się do nich zwracał po imieniu.

e.x z widokiem:

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) 

Więcej here.

e.x. w szablonach

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

Więcej here.

+0

w views.py, 'resolve_url ('passwords_api_root', args)' pracował dla mnie – BeatriceThalo