我有主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
答案 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()