Pertanyaan Django, beri nama parameter di urlpatterns


Saya mengikuti tutorial di mana urlpattern saya adalah:

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

Itu PasswordListView dan PasswordInstanceView seharusnya menjadi pandangan berbasis kelas. Saya tidak tahu arti dari nama parameter. Apakah ini parameter default yang dilewatkan ke tampilan?


32
2017-10-10 11:34


asal


Jawaban:


Tidak. Hanya saja Django memberi Anda pilihan untuk memberi nama pandangan Anda jika Anda perlu merujuknya dari kode Anda, atau template Anda. Ini berguna dan praktik yang baik karena Anda menghindari url hardcoding pada kode Anda atau di dalam template Anda. Bahkan jika Anda mengubah url yang sebenarnya, Anda tidak perlu mengubah yang lain, karena Anda akan merujuknya dengan nama.

e.x dengan tampilan:

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)

Lebih sini.

ex. dalam template

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

Lebih sini.


42
2017-10-10 12:06