你如何让Flask(Python)默认识别所有静态文件夹的index.html?

时间:2017-11-13 04:20:29

标签: python flask

我想为我的静态目录中的所有文件夹设置flask的index.html。 tree显示以下内容:

static/
├── contact
│   └── index.html
├── index.html
└── notoken
    └── index.html

我希望/notoken/contact显示/notoken/index.html/contact/index.html中的内容。 P.S:我不想使用render_template或send_from_directory或类似的东西来提供它们,因为我不想为每个单个文件/文件夹执行此操作

1 个答案:

答案 0 :(得分:1)

编写捕获路径的视图。在该路径下提供index.html文件。不存在的路径将为404。

@app.route('/pages/')
@app.route('/pages/<path:path>')
def page(path=''):
    html = os.path.join(path, 'index.html')
    return app.send_static_file(html)

使用url_for生成网址。您只能在模板中调用它,而不能在静态文件中调用它。

url_for('page', path='contact')
# /page/contact

添加page前缀以区别于其他网址,否则可能会发生冲突,因为path本质上是一个通配符匹配。