创建动态创建的html文件的目录。烧瓶

时间:2016-10-06 16:26:12

标签: python flask

我有一个简单的烧瓶应用程序,带有一个由一个单独的程序创建的一堆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> 

1 个答案:

答案 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>