Jinja2渲染多个html文件?

时间:2014-08-18 15:17:01

标签: python html templates flask jinja2

我有主index.html文件,它包含几个指向sub-html文件的链接。例如,从index.html开始,如果用户点击链接,则会指向子网页intro.html,但似乎render_template只会收到一个html文件。如何使用render_template连接多个html文件?


文件结构:     模板/         的index.html         text.html

我只想链​​接text.html的{​​{1}}文件。

index.html中,我会有如下链接:

index.html

然后我想指示<a href="text.html">Link</a> 加载Link

的内容

第二次编辑

text.html

我想要这样的事情。 如果我输入@app.route('/myhtml', methods=['GET']) def myhtml(): return render_template('myhtml.html') ,则应该链接到localhost:8000/myhtml

2 个答案:

答案 0 :(得分:0)

这非常简单 - 您只需要从网址中捕获您要求的文件,然后使用该文件查找现有模板:

from flask import Flask, render_template, abort
from jinja2 import TemplateNotFound
app = Flask(__name__)

@app.route('/', defaults={'page': 'index'})
@app.route('/<page>')
def html_lookup(page):
    try:
        return render_template('{}.html'.format(page))
    except TemplateNotFound:
        abort(404)

if __name__ == '__main__':
    app.run()

如果您只是尝试访问127.0.0.1:5000,则会将page变量默认为index,因此会尝试render_template('index.html')而如果您尝试127.0.0.1:5000/mypage相反,它会搜索mypage.html

如果失败,则会在404找不到错误的情况下中止。

这个例子完全来自Flask文档中的simple blueprint example

答案 1 :(得分:0)

在index.html文件中使用:

<a href="/about">Link</a>

然后你需要一个看起来像这样的相应路线:

@app.route('/about')
def about_page():

    # Do something else here

    return render_template('text.html')

if __name__ == '__main__':
    app.run()