2

jinja2で「タグを含める」方法。基本テンプレートに記事のブロックを出力する必要があります。そして彼らは子供たちで働いています。

views.py

Articles.query.filter_by(name=name).first()

base.html

{% block content %}
    Content base
{% endblock %}
---{{ this_articles_tag }}----

children.html

{% extends 'base.html' %}
{% block content %}
    Content children
{% endblock %}
---{{ output Articles }}----

この「インクルードタグ」のDjango、jinja2でそれを行う方法は?(context_processorを使用せずに)

4

1 に答える 1

2

テンプレートに別のテンプレートを含める必要がある場合は、Jinjaでincludeを使用してください。しかし、テンプレートタグについて話している場合(Djangoでは私はそれらがとても好きだったことを覚えています)、Flaskではあなたが言及したcontext_processorだけが行く方法です。これは悪いことではないと思います。

編集:

コンテキストプロセッサを関数として登録する最も簡単な方法は、ドキュメントに記載されています。

しかし、ダイナミックローダーのようなもっと凝ったものが必要な場合、またはさまざまな場所から関数をロードする場合は、基本的に辞書を返す関数をラップする独自のデコレータ関数を定義できます。

def example_templatetag():
  def get_something():
    return get_want_you_want_from_db()
  return dict(get_something=get_something)

次に、Flaskアプリオブジェクトを作成する場所で、この関数を簡単に登録できます。

app.context_processor(example_templatetag)

そして、テンプレートで使用できるのは次のようなものです。

{% set data_you_wanted=get_something() %}
{{ data_you_wanted }}

しかし、おそらくあなたにとっては、ドキュメントに記載されている方法で十分です;)

于 2013-02-08T13:11:31.560 に答える