4

Flask-FlatPagesを使用して(およびフォローアップして)静的サイトを構築していますFrozen-Flask

ページ内で、テキストと画像を混在させたいと考えています。これは、これを行う単純な方法です。

## Look at *this* image:
<img src="{{ url_for('static', filename='images/image.png') }}">
Hmm, it does **not** seem to load.

FlatPages{{ template tag }}はFlaskのテンプレートシステムではなくマークダウンを介してページを実行するため、解析されていません(私が間違っていなければ)。

正しい画像リンクを取得するにはどうすればよいですか?

関連コード

#app.py
from flask import Flask, render_template
from flask_flatpages import FlatPages

app = Flask(__name__)
pages = FlatPages(app)

@app.route('/tip/<path:path>')
def tip_detail(path):
    tip = pages.get_or_404(path)
    template = tip.meta.get('template', 'tip_detail.html')
    return render_template(template, tip=tip)

#tip_detail.html
<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
<h1>{{ tip.meta.title }}</h1>
{{ tip }}
</body>
</html>
4

1 に答える 1

3

https://github.com/naringasがhttps://github.com/SimonSapin/Flask-FlatPages/pull/1に残したコメントで解決

結局のところ、Flask-FlatPages は Jinja テンプレート タグをレンダリングしません。ただし、カスタム HTML レンダラーを設定するオプションがあります。それを使用して、マークダウンをレンダリングする前に最初に Jinja テンプレートをレンダリングします。

#add these lines to app.py
def prerender_jinja(text):
    prerendered_body = render_template_string(Markup(text))
    return pygmented_markdown(prerendered_body)

app.config['FLATPAGES_HTML_RENDERER'] = prerender_jinja
于 2014-02-05T14:32:21.207 に答える