カスタム タグを使用すると、おそらくこの問題を解決できますが、すべてのテンプレートを db に保存することを制限するものがないため、テンプレート内に完全なテンプレートが含まれる可能性があるため、少し複雑になる可能性があります (他のテンプレート タグが含まれる場合があります)。 )。最も簡単な解決策は、データベースからテンプレート文字列を手動でレンダリングし、それを変数としてメイン テンプレートに渡すことだと思います。
from django.template import Template, Context
...
context = {
'current_city': 'London'
}
db_template = Template('the current city is: {{current_city}}') # get from db
context['content'] = db_template.render(Context(context))
return render_template(request, 'about_me.html', context)
ノート:
この道をたどると、ビューを実行するたびに db テンプレートをコンパイルする必要があるため、あまり効率的ではない可能性があります。そのため、コンパイルされたバージョンの db をキャッシュしてから、適切なコンテキストを渡すことができます。以下は非常に単純なキャッシュです。
simple_cache = {}
def fooview(request):
context = {
'current_city': 'London'
}
db_template_string = 'the current city is: {{current_city}}'
if simple_cache.has_key(db_template_string):
db_template = simple_cache.get(db_template_string)
else:
simple_cache[db_template_string] = Template(db_template_string)
context['content'] = db_template.render(Context(context))
return render_template(request, 'about_me.html', context)