Python多个装饰器和调用函数

时间:2016-11-24 14:55:17

标签: python flask decorator bad-request

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

我有两个python装饰器,其中包含如下函数:

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

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

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

  

错误请求浏览器(或代理)发送了此服务器的请求   无法理解。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

@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

代码组织:
  • <强>控制器:

    从路线调用。应用程序中的胶水负责处理请求。通过使用Models中的业务逻辑获取Services中的数据并返回视图的结果来工作。应验证用户输入。

    控制器操作:Reference Guide

    • 索引
    • show
    • 创建
    • 更新
    • 破坏

      • 多个文件名:例如:cases.py
      • 多个类名:例如:Cases
  • <强>型号:

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

    • 单数文件名:例如:case.py
    • 单数类名:例如:Case
  • <强>路线:

    处理URI请求,这些是Flask中的BluePrints。致电Controllers。使用v1组织为api的命名空间版本。与API相关的路线都在此目录中。

    • 多个文件名,api前缀:例如:api_cases.py