flask - 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")
}
哪个是最佳实践?谢谢。
解决方案
在这种情况下,最佳做法是使用“/”作为索引,并避免完全使用“/index”和“/index.html”。索引页面是主页的另一个名称,它是站点根页面的同义词,即“/”。所有其他路由都必须以它为前缀,因此“/index”、“/home”等是多余的。
至于向路由添加文件扩展名,这不仅是不必要的,而且如果您想使用content-negotiation为该路由提供不同的内容类型,这可能会在未来丢失。例如,如果您想为移动和 SPA 客户端提供同一页面的 JSON 版本怎么办?我不知道任何声明省略文件扩展名是最佳实践的来源,但这隐含在 Flask 文档中的每个路由示例都省略了文件扩展名。例如,提供 HTML 页面的渲染模板示例在路由中不包含 .html 后缀。
推荐阅读
- c# - Instagram API - Instasharper 在登录时给出“challenge_required”错误
- sql - 在 sql 过程中更新表的 IF ELSE 语句不起作用
- codemirror - codemirror 内部模式自动缩进问题
- javascript - React 状态存储和输出重复值
- c - 当我访问结构的成员时发生分段错误
- node.js - Nuxt - 服务器端的 Axios 请求不发送referer
- python - 为什么我的模型的“on_delete=models.CASCADE”不生成级联外键约束?
- c# - 一个 C# 和一个 F# 项目的共享目录
- c# - 如何放置 Windows 窗体链接以将我的表单下载到 HTML 网页上
- facebook - 如何让 Facebook 图形 API 返回所有具有洞察力和发布商平台故障的广告活动