我有一个简单的烧瓶应用程序,带有一个由一个单独的程序创建的一堆html文件的模板文件夹。我想通过点击localhost:8888/<html_filename>
和(1)来提供每个html文件
(2)创建一个目录,其中包含指向我的主/
端点上这些端点的超链接。
关于如何获得jinja模板来创建指向这些端点的链接的想法?这是我一直在想的。
Flask App:
@app.route('/')
def index():
reports = [f_name for f_name in os.listdir("templates") if f_name.endswith(".html")]
return render_template("index.html", reports=reports)
@app.route('/<report>')
def render_report(report):
return render_template(report+'.html')
的index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Report Directory</title>
</head>
<body>
<ul>
{% for r in reports %}
<li>
<a href="{{ r }}">{{ r }}</a>
</li>
{% endfor %}
</ul>
</body>
</html>
答案 0 :(得分:0)
离开我的头顶并且没有以任何方式测试沿着以下方向定义路线:
@route("/<string:slug>/", methods=['GET'])
def page(self, slug):
if slug_exists_as_a_html_file(slug):
return render_template(slug)
abort(404)
如果slug与有效的html模板文件匹配,则函数(或内联))slug_exists_as_a_html_file
需要返回True,否则返回false。
要生成报告列表,请使用以下内容:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Report Directory</title>
</head>
<body>
<ul>
{% for r in reports %}
<li>
<a href="{{ url_for('page', slug=r) }}">{{ r }}</a>
</li>
{% endfor %}
</ul>
</body>
</html>