这个问题可能是一个简单的问题。
我有两个python装饰器,其中包含如下函数:
@app.route('/insertsql', methods=['GET', 'POST'])
def insertsql():
@app.route('/login', methods=['GET', 'POST'])
def login():
我想在login()
函数中使用insertsql()
函数。那可能吗 ?当我尝试它时,我收到此错误
错误请求浏览器(或代理)发送了此服务器的请求 无法理解。
有什么建议吗?
答案 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
破坏
cases.py
Cases
<强>型号:强>
此处与数据库交互相关的代码。负责数据完整性。
case.py
Case
<强>路线:强>
处理URI请求,这些是Flask中的BluePrints。致电Controllers
。使用v1
组织为api的命名空间版本。与API相关的路线都在此目录中。
api
前缀:例如:api_cases.py