レンダリング中のnoreversematch: '' django.contrib.auth.views.login ''の逆
-
14-10-2019 - |
質問
Djangoの認証を使用しており、login.htmlテンプレートでは、次のステートメントがエラーを生成しています。
{% url 'django.contrib.auth.views.login' %}
TemplatesYntaxerror AT /LOGIN
レンダリング中にnoreversematchをキャッチしました: '' django.contrib.auth.views.login '' with arguments '()'およびキーワード引数 '{}'を使用してreverse for ''
このURLは私のurls.pyで定義されています:
(r'^login$', 'django.contrib.auth.views.login')
AUTHシステムをインストールしました:
INSTALLED_APPS = (
'django.contrib.auth',
...
)
何か案は?
解決
Django1.10の時点:
Django1.10の時点で、文字列を使用することはできなくなりました 'django.contrib.auth.views.login'
の url()
または {% url %}
鬼ごっこ。
まず、URLパターンを変更して呼び出し可能なものを使用し、URLパターンに名前を付けます。例えば:
from django.contrib.auth import views as auth_views
url_patterns = [
url(r'^login$', auth_views.login, name='login'),
]
次に、URLタグを更新して、同じ名前を使用します。
{% url 'login' %}
Django1.5の時点:
必要はありません {% load url from future %}
もう、引用された構文を使用するだけです({% url 'django.contrib.auth.views.login' %}
)そして、あなたは完了です(を参照してください Django 1.5リリースノート).
Django1.3の時点:
ご了承ください Django 1.3の時点 (カレン・トレーシーが指摘するように 下)、これを修正する正しい方法は、追加することです。
{% load url from future %}
テンプレートの上部で、次のように使用します。
{% url 'django.contrib.auth.views.login' %}
Django1.3の前:
そのエラーメッセージから判断すると(ビューへのパスの周りのダブルシングルクォートに注意してください)、私はそれが {% url ... %}
タグは引用符を望んでいません、試してください:
{% url django.contrib.auth.views.login %}
他のヒント
引用符のある構文は、Django 1.3で新しくなっています。 1.3フォワードでエラーを修正する正しい方法は、テンプレート内の(future%からURLを積み込みます}をIncldueすることです。