web-dev-qa-db-ja.com

NoReverseMatchエラー

Django=ログインシステムでこのエラーが発生し続けます。ここに私のurls.pyの一部を示します。

     (r'^contractManagement/login', 'Django.contrib.auth.views.login', {'template_name': 'login.html'}),

私が得ている正確なエラー:

Exception Type: NoReverseMatch
Exception Value:    Reverse for ''Django.contrib.auth.views.login'' with arguments '()' and keyword arguments '{}' not found.

このエラーが発生する理由がわかりません。他に何か必要な場合はお知らせください。

33
Dean

このURLを反転しようとしている場所は表示されませんが、二重引用符で囲まれているようです。 urlタグを使用している場合、URL名を引用符で囲む必要がないことに注意してください。

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

じゃない

{% url 'Django.contrib.auth.views.login' %}
44
Daniel Roseman

''the.unknown.view''に含まれるqoutが多すぎることが報告されています。

これは、引用構文がDjango 1.5以降で有効になるためです。Django 1.3または1.4の場合は、テンプレート内のこの行による将来の動作:

{% load url from future %}

これはDjango 1.5。


Django 1.5+の例

{% url "path.to.some.view" %}

Django <= 1.4.x(「future」コマンドなし)の古典的な構文は次のとおりです。

{% url path.to.some.view %}
19
hynekcer

私はあなたのURLに名前を付けます(それを行うには、urlメソッドを使用する必要があります)また、すべてのURLに末尾のスラッシュを追加する必要があります、Django CommonMiddlewareはしない場合は、すべてのURLで302リダイレクトを実行します。

from Django.conf.urls.defaults import *

urlpatterns = patterns('',
     url(r'^contractManagement/login/', 'Django.contrib.auth.views.login', {'template_name': 'login.html'}, name='contract_login'),

)

次に、コードでリバースを使用するか、テンプレートでURLを使用します。実際のURL(changedCotractManagement/login /)を変更することに決めた場合、名前が同じである限り、コードは引き続き有効です。

コード内:

from Django.core.urlresolvers import reverse
reverse('contract_login')

テンプレート内:

{% url contract_login %}

編集: MrOodlesごと

6
MattoTodd