20

私が使用するとしますreturn render_template('index.html', users=users)。ビュー内でファイル名を明示的に送信せずに、テンプレート内でファイル名を取得することは可能ですか?

4

2 に答える 2

20

文書化されていませんが{{ self._TemplateReference__context.name }}、テンプレート名が付けられます。の後に使用できる興味深い属性がいくつかありますself._TemplateReference__context

たとえば、これを最上位の基本テンプレートに追加できます。

        <meta name="template" content="{{ self._TemplateReference__context.name }}">

そのため、ページのソースを見ると、関連するテンプレート ファイルをすばやく見つけることができます。この種の情報を公開したくない場合は、テスト環境に対して条件付きにします。

于 2016-10-31T16:58:35.397 に答える
8

ベース名だけが必要な場合は、{{ self }}which を使用して、テンプレートのベース名を含む repr 文字列を返すことができます (例: <TemplateReference 'view.html'>. これをフィルターで解析できます。{{ self | quoted }}

@app.template_filter('quoted')
def quoted(s):
    l = re.findall('\'([^\']*)\'', str(s))
    if l:
        return l[0]
    return None

'/full/path/to/view.html' などのフル パスが必要な場合は、Template をサブクラス化することをお勧めします。

于 2012-09-06T14:58:33.543 に答える