主な問題は、コンテンツを配置するブロックをプログラムでどのように選択できるかです。以下は別のプロジェクトで機能していますが、新しいプロジェクトでは何らかの理由で機能しません。両方のプロジェクトで、同じマシンで同じ (既定の) テンプレート コンテキスト プロセッサを使用しています。
このような基本テンプレートがあります
...
{% block Title %}<h1>Whoo</h1>{% endblock %}
{% block Content %}<p>Hi there</p>{% endblock %}
...
そして、このような拡張テンプレート
{% extends "base.html" %}
...
{% block myblock.name %} <p> {{ myblock.content }} </p> {% endblock %}
<p> {{ myblock.name }} </br> {{ myblock.content }} </p>
...
そして、そのようにレンダリングする
myblock = { 'name': 'Title', 'content': 'stuff' }
return render_to_response( 'extended.html', {'myblock': myblock}, context_instance=RequestContext(request) )
私は取得し、最初のプロジェクトに参加することを期待しています:
...
<p> stuff <p>
<p>Hi there</p>
<p> Title </br> stuff </p>
...
しかし、2番目のプロジェクトでは
...
<h1>Whoo</h1>
<p>Hi there</p>
<p> Title </br> stuff </p>
...
そのため、2 番目のプロジェクトでは、myblock dict がテンプレートによって渡されて処理されますが、{% block myblock.name %} の myblock.name は、変数ではなくリテラルとして解釈されるようです。Django に {% block %} タグ内の変数を強制的に評価させる方法についてのアイデアはありますか?