26

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

何か案は?

4

2 に答える 2

65

Django 1.10 以降:

'django.contrib.auth.views.login'Django 1.10 以降、文字列inurl()または{% url %}タグを使用することはできなくなりました。

最初に、callable を使用するように 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.3 の時点で(Karen Tracey が以下で指摘しているように)、これを修正する正しい方法は次を追加することであることに注意してください。

{% load url from future %}

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

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

Django 1.3 より前:

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

{% url django.contrib.auth.views.login %}
于 2011-01-02T14:37:11.373 に答える
9

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

于 2011-05-29T14:07:04.653 に答える