11

django で url テンプレート タグを使用しようとしましたが、うまくいきませんでした。

このようにurls.pyを定義しました

urlpatterns = patterns('',
    url(r'^analyse/$',              views.home,  name="home"),
    url(r'^analyse/index.html',     views.index, name="index"),
    url(r'^analyse/setup.html',     views.setup, name="setup"),
    url(r'^analyse/show.html',      views.show,  name="show"),
    url(r'^analyse/generate.html',  views.generate, name="generate"),

このようにビューでURLパターンを定義しました

{% url 'show'%}

その後、このエラーメッセージが表示されました

レンダリング中に例外をキャッチしました: 引数 '()' とキーワード引数 '{}' を持つ ''show'' のリバースが見つかりません。

元のトレースバック (最新の呼び出しが最後): ファイル "/Library/Python/2.5/site-packages/django/template/debug.py"、71 行目、render_node 結果 = node.render(context) ファイル "/Library/Python /2.5/site-packages/django/template/defaulttags.py"、155 行目、render nodelist.append(node.render(context)) ファイル内"/Library/Python/2.5/site-packages/django/template/defaulttags .py"、382 行目、レンダー レイズ e NoReverseMatch: 引数 '()' およびキーワード引数 '{}' を持つ ''show'' のリバースが見つかりません。

なぜdjangoがレンダリングに失敗したのだろうか? テンプレートでそれを定義する正しい方法は何ですか?

4

5 に答える 5

13

重要: これは django 1.4 用でした。django 1.5 では正反対です。

引用符なしで URL 名を使用してみてください

{% url show %}

これではない

{% url 'show'%}
于 2012-11-16T14:38:57.947 に答える
10

問題は、「show」を一重引用符で囲んでいることです。これを「show」に変更すると、うまくいくはずです。

こちらをご覧ください

于 2010-01-22T16:56:29.173 に答える
3

まだ実装されていないビューがあるかもしれません。{% url ... %} フィルターを使用すると、テンプレート エンジンが urls.py のパターンからすべてのビューを見つけようとするようです。

通常、urls.py の最後のパターンのエラーが表示されます。

まだ実装していないすべての URL パターンをコメントアウトしてみてください。

また、必ずフル パスを使用してください。

{% url myapp.views.home %}

URL テンプレート フィルターは非常に不安定に見えます。将来の互換性を維持するようにしてください。

于 2012-06-28T16:09:50.097 に答える
1

使用しようとしているビューをもう少し具体的にする必要がある場合があります。

{% url appname.views.show %}
于 2010-02-24T16:28:52.830 に答える
0

何が価値があるのか​​、私は同じ問題を抱えていました。なぜ今なのかは覚えていませんが、これで解決しました。私が取り組んでいたスクラムアプリの例。

url(r'^$', 'scrum.views.index',  name='scrum-index'),
于 2009-11-22T05:44:13.813 に答える