Djangoでテンプレートタグを記述する
-
05-07-2019 - |
質問
Djangoで作成されたCMSをカスタマイズしようとしています。コンテンツエディタの柔軟性が十分でないため、より良いソリューションを考えています。
説明しなくても、 django-better-chunks または django-flatblocks
。テンプレート内から完全に編集可能な領域を設定します。これらの編集可能な領域を、文字列とオブジェクトインスタンスの組み合わせにバインドしたいと思います。 1つの例は、1つの製品に基づいて複数の編集可能な領域を持つことです。
{% block product_instance "title" %}
{% block product_instance "product description" %}
したがって、 product_instance
として別の製品のビューがある場合、これらの2つの blocks
は異なるデータを表示します。また、文字列部分のみを通過するサイト全体のブロックの使用も見られます。基本的に、1無限大の識別子を渡すことができるようにしたいと思います。
しかし、私はここで2つの面で本当に苦労しています:
-
混合識別子と実際のコンテンツの関係を定義するにはどうすればよいですか。
block
"インスタンス?ここにはコンテンツタイプが含まれていると感じていますが、どこから探し始めればいいのかわかりません! -
そして、上記の構文を読み取り、それをレンダリング用のオブジェクトに変換するテンプレートタグを作成するにはどうすればよいですか?
解決
このために、包含タグを作成し、次のように使用できます:
{% load my_tags %}
{% product bicycle <extra vars ...> %}
タグを定義するには、app / templatetags / mytags.pyに追加します:
@register.inclusion_tag('results.html')
def product(item, *extra):
#maybe repackage extra variables
#and add them to the returned dictionary
item_form = ItemForm(item) #form.ModelForm instance
return {'item': item, 'item_form':item_form, ...}
次に、アイテムのhtmlを返すテンプレートが必要になります。
<h1>{{item.title}}</h1>
{{item_form}}
... add some conditional statements depending on extra vars
所属していません StackOverflow