web-dev-qa-db-ja.com

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パラメーターの意味を理解できませんでした。ビューに渡されるデフォルトのパラメーターですか?

43
Leonardo

いいえ。それはDjangoは、コードまたはテンプレートからビューを参照する必要がある場合にビューに名前を付けるオプションを提供します。これは、ハードコーディングを避けるため、便利で良い方法です。コードまたはテンプレート内のURL実際のURLを変更しても、名前で参照するため、他に何も変更する必要はありません。

ビュー付きのe.x:

from Django.http import HttpResponseRedirect
from Django.core.urlresolvers import reverse #this is deprecated in Django 2.0+
from Django.urls import reverse #use this for Django 2.0+

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

もっと こちら

例テンプレートで

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

もっと こちら

53
rantanplan