私はDjangoにJinja2を使ってTornadoを使用しましたが、(a)テンプレートで定義することができ(ビューではない)、(b)を基本テンプレートで利用できる変数を設定できないということで、これが由来するものdjango-libsのコードのほんの4行目のコードを見ると、うまく機能しているようなものを試すことができました。次に、さまざまなブロックに表示されるタイトル文字列の例を示します。
settings.py - テンプレート(ジャンゴ1.10+)に追加
TEMPLATES = {
...
builtins = ['mysite...wherever...templatetags',]
}
mysite.whereever.templatetags.py
from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def setvar(context, key, value):
context.dicts[0][key] = value
return ''
base.html
{% block settings %}
{% comment %}
Put this at the TOP of the template before
any blocks that use variables.
{% endcomment %}
{% endblock settings %}
<html>
<head><title>{{title}}</title></head>
<body><h1>My Site: {{title}}</h1>
{% block body %}
{% endblock body %}
</body></html>
menu.html - ビューで「タイトル」を設定していないテンプレート:
{% extends "base.html" %}
{% block settings %}
{{ block.super }} {% comment %}optional{% endcomment %}
{% setvar 'title' 'Menu' %}
{% endblock %}
{% block body %}
<ul><li>Fish</li><li>Steak</li></ul>
{% endblock %}
今タイトルは、それが派生テンプレートで定義されますが表示されているにもかかわらず、HTMLでの2つの場所に表示されます。一番上のテンプレートに
「ブロックする」理由は考えません。 {{%block test1%} {%with my_var1 = 1%} {{my_var1}} {%endwith%} {%endblock%} 'が動作するかどうかを確認するだけで確認できますか? – karthikr
@karthikrはい、私はこれについて確信しています、ただテストしました。それが理由である可能性があるなら私はDjango 1.3を使います。 – Hellnar
私はDjango 1.6.1と同じ問題があります。あなたはこの問題を解決できましたか? – jaw