Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 简单视图装饰器_Python_Decorator_Flask - Fatal编程技术网

Python 简单视图装饰器

Python 简单视图装饰器,python,decorator,flask,Python,Decorator,Flask,我正在开发一个验证api令牌的decorator,我的第一个任务是以最小的工作顺序获得decorator: def check_token(view_method): @wraps(view_method) def wrapped_view(*args, **kwargs): token = request.args['token'] if token is None: abort(403) return v

我正在开发一个验证api令牌的decorator,我的第一个任务是以最小的工作顺序获得decorator:

def check_token(view_method):
    @wraps(view_method)
    def wrapped_view(*args, **kwargs):
        token = request.args['token']
        if token is None:
            abort(403)
        return view_method(*args, **kwargs)
    return wrapped_view
这类工作,即如果提供了令牌,视图工作,但如果没有提供令牌,则会出现400错误请求错误。我想发送403错误,但我还没有意识到这一点


它只返回400错误,这有什么错?如何改进这一点?

请求。args
是一个
多目录
,如果请求了一个在目录中不存在的密钥,它就会引发。此处
请求。args['token']
在到达
中止(403)
之前会引发。以下几种解决方案是:

## If a 2nd optional argument is provided to dict.get then
## it does not raise if key is not found. Instead returns
## the 2nd argument passed as default.

token = request.args.get('token', None)
    if not token:
        ## Error handling
或:


request.args
是一个
MultiDict
,如果请求了dict中不存在的密钥,它将引发。此处
request.args['token']
在到达
中止(403)
之前引发。以下几种解决方案是:

## If a 2nd optional argument is provided to dict.get then
## it does not raise if key is not found. Instead returns
## the 2nd argument passed as default.

token = request.args.get('token', None)
    if not token:
        ## Error handling
或:


可能是因为
token=request.args['token']
本身在到达
abort(403)
之前抛出
keyrerror
?我的意思是
request.args
中没有key
token
。试试
request.args.get('token',None)
,看看这是否有效。这是我现在不知道的,我想,让我们试试。这是有效的,所以如果你回答下面的问题,我会勾选它。请求是一个Werkzeug MultiDict,因此我需要改进我对它和python的理解,谢谢。可能是因为
token=request.args['token']
本身在到达
abort(403)
之前抛出了
keyrerror
?我的意思是
request.args
中没有键
令牌
。试试
request.args.get('token',None)
,看看这是否有效。这是我现在不知道的,我想,让我们试试。这是有效的,所以如果你回答下面的问题,我会勾选它。请求是一个Werkzeug MultiDict,因此我需要改进我对它和python的理解,谢谢。