python - 为什么在 Flask 中调用第一个请求后阻止任何设置方法?

标签 python flask flask-restful

我正在使用 Flask 和 Flask-Restful 开发一个项目,试图根据用户在我的 Restful API 中的输入获取动态 URL。我创建了一个带有 get 方法的类,该方法将响应请求,当用户调用另一个资源时,它会激活新资源并创建一个 url。

当我尝试向我的 api 添加新资源时出现问题,它调用 Flask 中的函数 setupmethod 来检查应用程序是否处于调试状态以及第一个请求是否已经发出。

 if self.debug and self._got_first_request:
     raise AssertionError('A setup function was called after the '
     'first request was handled. This usually indicates a bug '
     'in the application where a module was not imported '
     'and decorators or other functionality was called too late.\n'
     'To fix this make sure to import all your view modules, '
     'database models and everything related at a central place '
     'before the application starts serving requests.')

克服此问题的一个简单方法是修改 Flask 中的 add_view 函数以避免此行为。我首先想了解为什么您会避免在调用第一个请求后创建 View 或在我的情况下创建资源之类的设置方法?

最佳答案

这是为了避免像您刚才描述的那样的设计。事先定义所有路线。然后使用 session 或数据库存储用户是否已经进入一个点并允许进入下一个点。

如果您需要具有不同参数的路由,则添加一个带有 path 参数的路由,该参数可以基于值进行分派(dispatch),而不是在运行时动态添加新路由。


还有一点,你不应该修改你安装的库的代码。如果您升级库,您的更改将被覆盖。在 Flask 的情况下,您可以子类化 Flask 对象并改写此方法。

关于python - 为什么在 Flask 中调用第一个请求后阻止任何设置方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047784/

相关文章:

python - 将 Auth0 装饰器与 Flask-RESTful 资源一起使用

python - 如果没有给出任何操作,让 python 显示帮助屏幕

python - 在 Pandas 中分配单元格值的最快方法

javascript - 动态更改 div ID 和 div 内其他元素的 ID

python - Jinja active_page 在包含的文件中不起作用

python - Flask+requests API ConnectionRefusedError : [Errno 111] Connection refused

python - flask Restful : passing parameters to GET request

python - 在 sklearn 中可视化决策树

python - 如何获得两个日期之间的差值?

Python Flask 请求 400 错误代码