Python 多个装饰器和调用函数

Python Multiple decorators and calling functions

这个问题可以是一个简单的问题。

我有两个 python 装饰器,其内部功能如下:

@app.route('/insertsql', methods=['GET', 'POST'])
def insertsql():

@app.route('/login', methods=['GET', 'POST'])
def login():

我想在 insertsql() 函数中使用 login() 函数。那可能吗 ?当我尝试时,我得到这个错误

Bad Request The browser (or proxy) sent a request that this server could not understand.

有什么建议吗?

有几种不同的方法可以解决这个问题。如果您想确保用户在 运行 该操作之前登录,您可以使用装饰器。

@auth.login_required
def before_request():

但是,您可能真的只是想在一条路线中做两件事。我喜欢通过将 Flask 应用程序分解成不同的组件来处理这个问题。路由、控制器和模型。通过这种方式,一个路由可以调用多个控制器操作,其中的逻辑不会与您的路由紧密耦合,并且可以轻松地重复使用。

项目结构:

├── app.py ├── config.py ├── controllers │   └── cases.py ├── manage.py ├── models │   └── case.py ├── routes │   └── v1 │   ├── api_cases.py │   └── api_test.py ├── services └── templates

代码组织:
  • 控制器:

    从路由调用。粘附在负责处理请求的应用程序中。通过使用视图的 Services 和 return 结果中的业务逻辑在 Models 中获取数据来工作。应该验证用户输入。

    控制器操作:Reference Guide

    • 指数
    • 显示
    • 创建
    • 更新
    • 毁灭

      • 复数文件名:例如:cases.py
      • 复数 class 名称:例如:Cases
  • 型号:

    数据库交互相关代码在此。负责数据的完整性。

    • 单数文件名:例如:case.py
    • 单数class姓名:例如:Case
  • 路线:

    处理 URI 请求,这些是 Flask 中的蓝图。通话 Controllers。使用 v1 组织成 api 的命名空间版本。 API 相关路线在此目录中。

    • 复数文件名,带api前缀:例如:api_cases.py