相关疑难解决方法(0)

如何根据要求编写Flask装饰器?

我不确定为什么以下装饰器[validate_request]不起作用.编写此类验证装饰器的正确方法是什么?

def validate_request(req_type):
    if req_type is 'json' and not request.json:
        abort(400)
    def decorator(func):
        @functools.wraps(func)
        def wrapped_func(*args, **kwargs):
            return func(*args, **kwargs)
        return wrapped_func
    return decorator

@app.route('/todo/api/v1.0/tasks/<int:task_id>', methods=['PUT'])
@validate_request('json')
@json
def update_task(task_id):
#    task = filter(lambda t: t['id'] == task_id, tasks)
    task = [task for task in tasks if task['id'] == task_id]
    if len(task) == 0:
        abort(404)

    #update task
    for field in ['title', 'description', 'done']:
        task[0][field] = request.json.get(field, task[0][field])
Run Code Online (Sandbox Code Playgroud)

错误: -

Traceback (most recent call last):
  File "C:\AGR\Programming\LearningPython\FlaskLearning\flask_rest\app.py", line 156, in <module> …
Run Code Online (Sandbox Code Playgroud)

python flask python-decorators

9
推荐指数
2
解决办法
6828
查看次数

标签 统计

flask ×1

python ×1

python-decorators ×1