2012-10-10 9 views
30

Ich folge ein Tutorial, in dem meine urlpatterns sind:Django, name Parameter in 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..., 
) 

Die PasswordListView und PasswordInstanceView sollen Klasse basierte Ansichten sein. Ich konnte die Bedeutung der Name Parameter nicht herausfinden. Ist es ein Standardparameter, der an die Ansicht übergeben wird?

Antwort

39

Nein. Es ist nur so, dass django Ihnen die Möglichkeit gibt, Ihre Ansichten zu benennen, falls Sie aus Ihrem Code oder Ihren Vorlagen darauf Bezug nehmen müssen. Dies ist eine nützliche und empfehlenswerte Vorgehensweise, da Sie das Codieren von URLs in Ihrem Code oder in Ihren Vorlagen vermeiden. Selbst wenn Sie die tatsächliche URL ändern, müssen Sie nichts anderes ändern, da Sie sich auf sie beziehen.

e.x mit Blick:

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) 

Mehr here.

e.x. in Schablonen

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

Mehr .

+0

in ansichten.py, 'resolve_url ('passwords_api_root', args)' arbeitete für mich – BeatriceThalo