【问题标题】:Flask route and slashes [duplicate]烧瓶路线和斜线[重复]
【发布时间】:2018-03-02 17:51:51
【问题描述】:

在烧瓶路线中对我来说有一个问题

我的路线是

@app.route('/user/<string:user>/')
def user(user):
    return '' + str(user)

当我访问 localhost:5000/user/ahmed/ 在 url 末尾带有斜线时,一切正常

但是如果我访问 localhost:5000/user/ahmed 没有最后一个斜线

flask 将我重定向到 localhost:5000/user/ahmed/None 并给我 404

【问题讨论】:

  • 去掉 后的斜线
  • @app.route('/user/&lt;string:user&gt;')
  • 如果我删除它,路由将不适用于这两种情况
  • 我无法编辑它,因为我的问题仍未解决

标签: python flask


【解决方案1】:

这里是直接取自flask documentation的一些相关信息

唯一 URL / 重定向行为

Flask 的 URL 规则基于 Werkzeug 的路由模块。这个想法 该模块的背后是确保基于 Apache 和更早的 HTTP 服务器开创的先例。

采取以下两条规则:

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

虽然它们看起来很相似,但它们在尾随的使用上有所不同 URL 定义中的斜线。在 第一种情况,项目端点的规范 URL 有一个 斜杠。从这个意义上说,它类似于一个文件夹 文件系统。在没有斜杠的情况下访问它会导致 Flask 重定向到带有斜杠的规范 URL。

然而,在第二种情况下,URL 的定义没有尾随 斜线,更像是类 UNIX 系统上文件的路径名。 使用尾部斜杠访问 URL 将产生 404 “未找到” 错误。

这种行为允许相对 URL 继续工作,即使 尾部斜杠被省略,与 Apache 和其他 服务器工作。此外,URL 将保持唯一,这有助于搜索 引擎避免将同一页面编入两次索引。

【讨论】:

  • 那么我的问题的解决方案是什么?
猜你喜欢
  • 2017-09-03
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 2018-04-28
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多