sanic-validation Python AttributeError:“请求”对象没有属性“ raw_args”

时间:2020-06-10 05:56:37

标签: python python-3.x validation sanic

我正在尝试在简单的Sanic Web服务器中使用请求验证包sanic-validation

使用sanic 20.3.0,sanic验证0.4.4和Python 3.8.3。

from sanic import Sanic
from sanic.response import json
from sanic_validation import validate_args

app = Sanic()

query_schema = {
    'name': {'type': 'string', 'required': True}
}

@app.route('/query', methods=['GET'])
@validate_args(query_schema)
async def query(request):
    print(request.args)
    name = request.args['name'][0]

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

但是,将GET请求发送到/query端点在Python终端中导致以下错误:

Traceback (most recent call last):
  File "/Users/n/opt/anaconda3/envs/test/lib/python3.8/site-packages/sanic/app.py", line 971, in handle_request
    response = handler(request, *args, **kwargs)
  File "/Users/n/opt/anaconda3/envs/test/lib/python3.8/site-packages/sanic_validation/decorators.py", line 59, in wrapper
    validation_passed = validator.validate(request.raw_args)
AttributeError: 'Request' object has no attribute 'raw_args'

为什么会发生此错误,我们该如何解决?谢谢!

1 个答案:

答案 0 :(得分:1)

似乎您使用的是sanic-validation存储库的旧版本。 如您在例外中所见:

第59行,在包装器中 AttributeError:“请求”对象没有属性“ raw_args”

基本上,该错误表明它对请求对象中的 raw_args 属性不熟悉。 我已经检查了sanic-validation存储库中装饰器的代码,似乎他们将其更改为 query_args 属性(也在第59行中)。

因此,也许您应该重新安装该软件包,或者只需从GitHub复制代码并将其发布到本地即可。