web-dev-qa-db-ja.com

レンダリング中のNoReverseMatch:「Django.contrib.auth.views.login」のリバース

Djangoの認証を使用していますが、login.htmlテンプレートで、次のステートメントがエラーを生成しています。

{% url 'Django.contrib.auth.views.login' %}

/ loginのTemplateSyntaxError

レンダリング中にNoReverseMatchがキャッチされました:引数「()」およびキーワード引数「{}」が見つからない「Django.contrib.auth.views.login」のリバース。

このURLは私のurls.pyで定義されています:

(r'^login$', 'Django.contrib.auth.views.login')

認証システムをインストールしました:

INSTALLED_APPS = (
    'Django.contrib.auth',
...
)

何か案は?

26
Nate Reed

Django 1.10:

Django 1.10以降、url()または'Django.contrib.auth.views.login'タグで文字列{% 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' %}

Django 1.5:

{% load url from future %}はもう必要ありません。引用符で囲まれた構文({% url 'Django.contrib.auth.views.login' %})を使用するだけで、完了です( Django 1.5リリースノート を参照)。

Django 1.3:

Django 1. (Karen Traceyが指摘しているように 以下 )の時点で、これを修正する正しい方法は次を追加することです。

{% load url from future %}

テンプレートの上部で、次を使用します。

{% url 'Django.contrib.auth.views.login' %}

Django 1.3より前:

そのエラーメッセージ(ビューへのパスを囲む二重引用符に注意)から判断すると、 {% url ... %} タグは引用符を必要としないと思います。次のことを試してください。

{% url Django.contrib.auth.views.login %}
65
Dominic Rodger

引用符付きの構文はDjango 1.3で新しく追加されました。1.3以降のエラーを修正する正しい方法は、テンプレートに{%load url from future%}を含めることです。

9
Karen Tracey