当前位置: 首页 > 知识库问答 >
问题:

烧瓶快速入门示例-404带尾随斜杠

赫连晋
2023-03-14

我正在阅读Flask quickstart指南,但是使用变量进行路由的示例对我来说并不适用。

from flask import Flask
app = Flask(__name__)

@app.route('/') # fine
def index():
    return 'Index Page'

@app.route('/hello') # fine
def hello():
    return 'Hello World!'

@app.route('/user/<username>') # <- fails unless trailing slash here
def show_user_profile(username):
    return 'User {}'.format(username)

if __name__ == '__main__':
    app.run()
  • http://127.0.0.1:5000/user/bob重定向到http://127.0.0.1:5000/user/bob/给我一个404

我还尝试了与指南中完全相同的代码。我的第一个要点中的错误是意料之中的吗?快速入门版本中的代码应该工作吗?还是我误解了什么?

我使用的是Python 2.7.10、Flask 0.10.1、Werkzeug 0.10.4

共有2个答案

赵驰
2023-03-14

这段代码已经在我的机器上使用了Python 2.7。

如果您正在使用多个参数,那么您的代码中缺少了{0}。

from flask import Flask
app = Flask(__name__)

@app.route('/') # fine
def index():
    return 'Index Page'

@app.route('/hello') # fine
def hello():
    return 'Hello World!'

@app.route('/user/<username>') # <- fails unless trailing slash here
def show_user_profile(username):
    if request.url[-1] != '/':
        return redirect(request.url + '/')
    return 'User {0}'.format(username)

if __name__ == '__main__':
    app.run()

正如您将看到的,我又添加了两行代码

    if request.url[-1] != '/':
        return redirect(request.url + '/')

上面的行将确保带有尾部斜杠的路由仍然有效。如果需要,您需要操作任何其他路径,而不是/。请尝试此代码。

裘嘉木
2023-03-14

我在python2中尝试了这个例子,效果很好,但在python3中出现了您描述的问题。你用的是第三版吗?如果你真的需要它,你确定你真的需要它吗?

看看这个http://flask.pocoo.org/docs/0.10/python3/#python3-支持

 类似资料:
  • 我想重定向下的任何路径到静态应用。下面的视图应该捕获这些路径并提供相应的文件(它只打印本示例的路径)。这适用于,和。为什么路径会导致404错误?

  • 文档指出,定义路由的首选方式是包含一个尾随斜杠: 这样,客户端就可以或并接收相同的结果。 但是,发布的方法没有相同的行为。 在这里,如果您,那么如果您不是在调试模式下运行,它将以失败,或者如果您是在调试模式下运行,它将以以下通知失败: 请求已发送到此URL(HTTP://localhost:5000/foo),但路由系统自动发出重定向到“HTTP://localhost:5000/foo/”。UR

  • quickstart 本教程假设你从头开始,没有Kafka和ZooKeeper历史数据。 quickstart_download 下载 0.10.0.0 的正式版本并解压。 > tar -xzf kafka_2.11-0.10.0.0.tgz > cd kafka_2.11-0.10.0.0 quickstart_startserver Kafka依赖ZooKeeper因此你首先启动一个ZooKe

  • 这个页面包含的示例代码将简单介绍如何使用数据库类。更详细的信息请参考每个函数单独的介绍页面。 初始化数据库类 下面的代码将根据你的 数据库配置 加载并初始化数据库类: $this->load->database(); 数据库类一旦载入,你就可以像下面介绍的那样使用它。 注意:如果你所有的页面都需要连接数据库,你可以让其自动加载。参见 数据库连接。 多结果标准查询(对象形式) $query = $

  • 环境搭建 创建工程 目录规范 开发调试 页面开发 打包Bundle

  • Yii 提供了一整套用来简化实现 RESTful 风格的 Web Service 服务的 API。 特别是,Yii 支持以下关于 RESTful 风格的 API: 支持 Active Record 类的通用 API 的快速原型; 涉及的响应格式(在默认情况下支持 JSON 和 XML); 支持可选输出字段的定制对象序列化; 适当的格式的数据采集和验证错误; 集合分页,过滤和排序; 支持 HATEO