作成したテンプレートファイルには次のものが含まれています。
{% if type({'a':1,'b':2}) is dict %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
次に、Jinja2は次のように応答します。
TemplateAssertionError: no test named 'dict'
私はJinja2とFlaskがまったく新しい
mapping
テスト を探しています:
{% if {'a': 1, 'b': 2} is mapping %}
"Oh Yes!"
{% else %}
"Oh No!"
{% endif %}
JinjaはPythonではないため、すべての組み込み関数にアクセスすることはできません(たとえば、追加しない限り、type
とprint
は存在しませんそれらを コンテキスト に。Flaskでは、これを context_processor
デコレータ )。
実際にはprint
はまったく必要ありません。デフォルトでは、すべてが出力されます(extends
が親である子テンプレートを使用している場合を除き、その場合は NULLマスターフォールバックなどの興味深いこと マスターテンプレートが出力されます)。
どうですか:
{% if {'a':1,'b':2} is mapping %}
print "Oh Yes!!"
{% else %}
print "Oh No!!!"
{% endif %}
組み込みテストのリスト を参照してください。
カスタムタイプを取得する場合は、次の例のようにフィールド名にアクセスできます。
{% if 'RelationField' in field.__class__.__name__ %}
<div class="col-md-1">
Manage object
</div>
{% endif %}