Jinja2 渲染多个 HTML 文件?
我有一个主要的 index.html
文件,里面包含了几个指向其他 HTML 文件的链接。比如说,当用户在 index.html
中点击一个链接时,它会跳转到子页面 intro.html
,但看起来 render_template
只接收一个 html
文件。我该如何用 render_template
连接多个 HTML 文件呢?
文件结构如下: templates/ index.html text.html
我只想从 index.html
链接到 text.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
,它应该链接到 myhtml.html
。
2 个回答
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()
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文档中的简单蓝图示例。