0

テンプレート内のビューのURLを次の方法で取得しようとしています

{% url 'session_views.login_user' %}

私のurls.pyは次のようになります

django.conf.urls.defaultsからインポート*

urlpatterns = patterns('myappname',

  # Greets user on the home page.
  (r'^$', 'session_views.index'),

  # Session
  (r'^login/?$', 'session_views.login_user'),
)

ただし、次のエラーが発生します。

TemplateSyntaxError at /
Caught NoReverseMatch while rendering:
Reverse for ''session_views.login_user'' with arguments '()'
and keyword arguments '{}' not found.

なぜ私は間違っているのですか?login_usersession_views.pyで呼び出されるビューを明確に定義しました。

4

2 に答える 2

2

あなたはおそらく、URLタグの機能を変更するdevブランチのドキュメントを見ているでしょう。

django <1.5の場合は、適切なドキュメントに従うか、futureurlタグをロードしてコードを将来にわたって利用できるようにする必要があります。

{% load url from future %} 

Django 1.5では、urlテンプレートタグの動作が変更され、最初の引数が特殊なケースの引用符で囲まれていない定数ではなく、コンテキスト変数になります。これにより、urlタグは、反転するURL名の値としてコンテキスト変数を使用できるようになります。

上位互換性パスを提供するために、Django 1.3は、新しい動作を実装する将来の互換性ライブラリ(future)を提供します。このライブラリを使用するには、urlタグを使用してテンプレートの先頭にload呼び出しを追加し、urlタグの最初の引数を引用符で囲みます。例えば:

{%load url from future%} {%url'myapp:view-name'%}新しいライブラリでは、urlテンプレートタグへの引数を区切るためのコンマ構文のサポートも廃止されています。

Django 1.5では、古い動作が将来のタグライブラリによって提供される動作に置き換えられます。新しい構文を使用するために、既存のテンプレートを移行します。

于 2013-01-13T22:25:04.243 に答える
2

errorReverse for ''session_views.login_user''を見てください。2 組の単一引用符があります。テンプレートでは引用符を使用しません。次のようにします。

{% url session_views.login_user %}

または、ビューに名前を付けることができます。その後、名前を介してそれらを呼び出すことができ、引用符が必要になります。

urls.py:

urlpatterns = patterns('myappname',

# ホームページでユーザーに挨拶します。(r'^$', 'session_views.index', name="index_view"),

# セッション (r'^login/?$', 'session_views.login_user', name="login_user"), )

テンプレートの URL の逆:

{% url "login_user" %}

編集:

回答を見た後Tomita's、私は質問を誤解したかもしれません。次のように URL を取得しようとしていると思いましたが、URL を変数として取得しようとしている可能性があります。私の答えは、のように URL をたどることに当てはまります<a href="{% url session_views.login_user %}"....。念のため、置いておきます。

于 2013-01-13T22:19:09.207 に答える