1

オブジェクトの配列をビューからテンプレートに渡します。ここで、各オブジェクトの URL を (別のビューに) 生成します。だから、私は私のURLconfに持っています:

    url(r'^item/(?P<id>[0-9]+)/(?P<slug>[a-zA-Z0-9]+)$',
    'show_item',
    name='show_item'),

テンプレートでは、オブジェクト リストを反復処理し、上記の URL の例に適合する URL を生成しようとするため、それぞれに 2 つのパラメーターを渡します。

    {% for item in items %}
        Item: {{ item.title }}, description: {{ item.description }}
        URL: {% url show_item item.id item.slug %}
    {%  endfor %}

残念ながら、django エラーが発生します。

Reverse for 'show_item' with arguments '(1, u'first-item')' and keyword arguments '{}' not found.

私は何を間違えましたか?

4

3 に答える 3

1

URL では、slug正規表現にハイフンを含める必要があります (さらに、アンダースコアを追加することもできます)。(?P<slug>[a-zA-Z0-9_\-]+)

于 2013-01-23T18:49:15.440 に答える
0

私が間違っていなければ、show_item を引用符で囲み、パラメーターに名前を付ける必要があります

{% url 'show_item' id=item.id slug=item.slug %}

また、次を使用して url によって生成されたものを確認します。

{% url 'show_item' id=item.id slug=item.slug as foo %}
{{ foo }}

「as foo」を使用すると、エラーを発生させずに生成された URL を表示できます。

于 2015-11-21T16:17:57.563 に答える
0

引数の名前は次のとおりです。

 {% for item in items %}
     Item: {{ item.title }}, description: {{ item.description }}
     URL: {% url show_item id=item.id slug=item.slug %}
 {%  endfor %}

URL 内の名前付きグループのドキュメント

于 2013-01-23T18:47:16.947 に答える