2012-10-10 12 views
30

Sto seguendo un tutorial in cui i miei urlpatterns sono:Django, parametro del nome 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..., 
) 

Il PasswordListView e PasswordInstanceView si suppone siano viste basate classe. Non sono riuscito a capire il significato del parametro nome. È un parametro predefinito passato alla vista?

risposta

39

No. È solo che Django ti dà la possibilità di nominare i tuoi punti di vista nel caso tu abbia bisogno di fare riferimento ad essi dal tuo codice o dai tuoi modelli. Questo è utile e buona pratica perché si evitano gli url hardcoding sul codice o all'interno dei modelli. Anche se cambi l'url effettivo, non devi cambiare nient'altro, dal momento che ti farai riferimento per nome.

e.x con vista:

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) 

Più here.

e.x. nei modelli

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

Altro here.

+0

in views.py, 'resolve_url ('password_api_root', args)' ha funzionato per me – BeatriceThalo

Problemi correlati