2

Webサイトのほとんどのページに、DBからロードされたカテゴリまたは最近の記事のリストがある場合、flaskとjinja2を使用してコードの重複を回避するにはどうすればよいですか?

現在のように、私は次のようなhtmlファイルを持っています:

{% include '/root/latest_articles.html' %}

そして、すべてのビューがパラメーター(記事のリスト)をテンプレートに渡す必要があります。これは避けたいです。

Flaskでこれを達成するための最良の方法は何ですか?

ありがとう。

編集

「追加のテンプレートコンテキスト」は機能します..DBからデータをロードし、「latest_articles.html」テンプレートでそれにアクセスする関数をエクスポートできます。

別の方法はありますか?

4

2 に答える 2

5

テンプレートコンテキストを追加できます:

@app.context_processor
def additional_context():
    return {
        'content': get_page_content_context(request.endpoint, g.language),
        'hot_links': get_hot_links(),
    }

テンプレートコードの場合、マクロを使用するか、を含めることができます。

UPD:

最初にテンプレートの継承を使用してみて、ページで許可されている場合は、カテゴリまたは最近の記事のリストをベーステンプレートに入れてください。

テンプレートコードを`@app.context_processor'で可変にすることもできますが、それは良い考えではないと思います。

@app.context_processor
def additional_context():
    return {
        'recent_articles_markup': do_mark_safe(render_template(
            'root/latest_articles.html', articles=get_recent_articles()),
    }
于 2013-03-26T08:47:55.160 に答える
1

このようなものに対する私の通常の解決策は、prepare関数を使用したクラス継承です。他のスレッドで私の答えを参照してください。

別の質問、同じ解決策。 Flaskでの動的ナビゲーション

于 2013-03-26T22:08:39.277 に答える