首页 > 解决方案 > app.route("/index") 或 ("/index.html") 的 Flask 路由的最佳实践

问题描述

是否有在 Flask 中定义应用程序路由以添加后缀“.html”的约定?例如,

@app.route("/index", methods=['GET'])
def index_func(){
    return render_template("index.html")
}

@app.route("/index.html", methods=['GET'])
def index_func(){
    return render_template("index.html")
}

哪个是最佳实践?谢谢。

标签: flask

解决方案


在这种情况下,最佳做法是使用“/”作为索引,并避免完全使用“/index”和“/index.html”。索引页面是主页的另一个名称,它是站点根页面的同义词,即“/”。所有其他路由都必须以它为前缀,因此“/index”、“/home”等是多余的。

至于向路由添加文件扩展名,这不仅是不必要的,而且如果您想使用content-negotiation为该路由提供不同的内容类型,这可能会在未来丢失。例如,如果您想为移动和 SPA 客户端提供同一页面的 JSON 版本怎么办?我不知道任何声明省略文件扩展名是最佳实践的来源,但这隐含在 Flask 文档中的每个路由示例都省略了文件扩展名。例如,提供 HTML 页面的渲染模板示例在路由中不包含 .html 后缀。


推荐阅读