烧瓶路线和斜线

时间:2018-03-02 17:51:51

标签: python flask

在烧瓶路线中,我有一个问题

我的路线是

@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

1 个答案:

答案 0 :(得分:2)

以下是直接从flask documentation

获取的一些相关信息
  

唯一网址/重定向行为

     

Flask的URL规则基于Werkzeug的路由模块。这个想法   该模块的背后是确保基于的美丽和唯一的URL   Apache和早期HTTP服务器规定的先例。

     

采取以下两条规则:

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

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

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

     

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

     

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