私は小さなサイトを構築するDjangoを学んでいます。オブジェクトをリストする多くのテンプレートがあり、それぞれにリンクがあります。 私は、カスタムテンプレートタグを作ることができると思った、カスタムテンプレートタグにurlタグを渡すにはどうすればよいですか?
{% object_list some %}
some
のようなものはobj_list
私はプリントアウトしてアイテムを指すlink
すべきいくつかのURL構造にしたいオブジェクトのリストである辞書{'list': obj_list, 'link': link}
です。
(object_list.htmlと呼ばれる)のテンプレートが今
{% for object in object_list %}
<li><a href="{% url myapp:object object.id %}">{{object.name}}</a></
{% endfor %}
ようになっているはずです、私の問題は、私は、URLに何をすべきかわからないということです。私はそれが 'myapp:object'が引数 'link'に置き換えられるように柔軟性を持たせたいと思います。例えば、オブジェクトタイプがUserの場合、私は{%url myapp:user user.id%}
を使います。
これは可能ですか?どうやって?
私は、フォームの引数として'myapp:myobject'
を与える
{% for object in object_list %}
{% url 'link' as my_url %}
<li><a href="{% url my_url object.id %}">{{object.name}}</a></li>
{% endfor %}
で、this solutionを試してみましたが、それは動作しません。 property_dict
が私の議論で、templatetag/property_extras.py
タグが保存されたファイルである
{% load property_extras %}
{% object_list property_dict %}
テンプレートでは、正確には、私はカスタム-without通常のテンプレートを使用している場合、それは動作しますタグ - (NoReverseMatchエラーを与えます)。詳細については
あなたは文字列リテラル'link'
を使用している、とあなたがオブジェクトIDが含まれていないので、私のテンプレートタグは
{% url 'link' as my_url %}
動作しませんを使用して
@register.inclusion_tag('properties/object_list.html')
def object_list(object_dict):
print(object_dict['list'])
print(object_dict['link'])
return {
'object_list': object_dict['list'],
'link': object_dict['link'],
}