2015-12-21 11 views
5

{% url 'something' %}がdjangoテンプレートでどのように機能するかを調べるのに少し問題があります。テンプレートにテンプレートのログインビューのURLを正しく取得する方法は?

web_1 | [21/Dec/2015 11:29:45] "GET /accounts/profile HTTP/1.1" 302 0 
web_1 | /usr/local/lib/python3.5/site-packages/django/template/defaulttags.py:499: RemovedInDjango110Warning: Reversing by dotted path is deprecated (django.contrib.auth.views.login). 
web_1 | url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) 
web_1 | 

/アカウント/プロファイルマップ、およびdjango.contrib.auth.views.loginに言及し、このテンプレートで唯一の場所は以下の通りです:

私はデバッグモードで私のウェブサイトを実行すると、私は標準出力でこれを参照してください。だから、

<a href="{% url 'django.contrib.auth.views.logout' %}?next={% url 'django.contrib.auth.views.login' %}">Log out</a> 

、私はいくつかの理由で、これは{%のurl%}コマンドを使用するには、適切な方法ではないことを推測します。正しい方法は何ですか?どのようにこの警告を取り除く?ここで

は私urlpatternsある:(名前は無視されるような、いない他の定義が含まれるもの)urls.py

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^accounts/', include('django.contrib.auth.urls')), 
    url(r'^accounts/profile', views.profile_view), 
    url(r'^$', RedirectView.as_view(url=reverse_lazy(views.profile_view))) 
] 
+0

'のURLで定義されている(URLエントリの名前を使用します。 py')すなわち、 'Log out ' – Pynchia

答えて

7

あなたは代わりにの、URLの名前を使用する必要があります点線のパス。

この場合、django.contrib.auth.urlsのURLパターンが含まれています。 that urls fileを見ると、ビューの名前がloginlogoutであることがわかります。

urlpatterns = [ 
    url(r'^login/$', views.login, name='login'), 
    url(r'^logout/$', views.logout, name='logout'), 
    ... 
] 

ためにあなたのリンクを変更します。

<a href="{% url 'logout' %}?next={% url 'login' %}">Log out</a> 
0

は、各関連エントリに名前を追加

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^accounts/', include('django.contrib.auth.urls')), 
    url(r'^accounts/profile', views.profile_view, name='acc_profile'), 
    url(r'^$', RedirectView.as_view(url=reverse_lazy(views.profile_view)), name='home') 
] 

その後テンプレートでは、上記で定義したURLエントリの名前を使用します。つまり、

<a href="{% url 'optional_template_namespace:entry_name' %}">The link text</a> 

与えられた場合には、loginlogout URLは標準django.contrib.auth.urlsから来て、彼らの名前は十分に簡単である(さらに詳細についてhereを参照)

<a href="{% url 'logout' %}?next={% url 'login' %}">Log out</a> 
1

URL

{% url 'login' %} 

Aを使用するときは、名前を参照することができ urls.py

url(r'^login/$', views.login, name='login'), 

を見てくださいND

{% url 'logout' %} 

またはテンプレートで次回にログアウトする必要があるならば、

<a href="{% url logout %}?next=/accounts/login/">Logout</a> 

この記事をチェックしてください 'django.contrib.auth.views.login'

関連する問題