相关疑难解决方法(0)

flask:error_handler用于蓝图

可以为蓝图设置error_handler吗?

@blueprint.errorhandler(404)
def page_not_found(error):
    return 'This page does not exist', 404
Run Code Online (Sandbox Code Playgroud)

编辑:

https://github.com/mitsuhiko/flask/blob/18413ed1bf08261acf6d40f8ba65a98ae586bb29/flask/blueprints.py

您可以指定应用程序范围和蓝图本地error_handler

blueprint flask http-status-code-404

23
推荐指数
2
解决办法
9222
查看次数

Flask:Decorator验证JSON和JSON Schema

我有一个烧瓶应用程序,调用期望JSON有效负载.在处理每个调用之前,我有一个两步错误检查过程:

  • 断言有效负载是有效的JSON
  • 断言JSON有效内容符合特定模式

以下列方式实现:

@app.route('/activate', methods=['POST'])
def activate():
    request_id = request.__hash__()

    # Assert that the payload is a valid JSON
    try:
        input = request.json
    except BadRequest, e:
        msg = "payload must be a valid json"
        return jsonify({"error": msg}), 400

    # JSON Schema Validation
    try:
        validate(request.json, app.config['activate_schema'])
    except ValidationError, e:
        return jsonify({"error": e.message}), 400
Run Code Online (Sandbox Code Playgroud)

由于此代码在许多调用中都是重复的,我想知道如果我可以优雅地将它移动到装饰器,那么形式为:

@validate_json
@validate_schema(schema=app.config['activate_schema'])
@app.route('/activate', methods=['POST'])
def activate():
    ....
Run Code Online (Sandbox Code Playgroud)

问题是request参数是隐式的:我可以在函数中引用它,但它不是它的参数.因此,我不知道如何在装饰器中使用它.

如何使用Python装饰器实现验证检查?

python decorator jsonschema flask python-decorators

17
推荐指数
2
解决办法
1万
查看次数