【发布时间】:2020-06-10 05:56:37
【问题描述】:
我正在尝试在一个简单的 Sanic 网络服务器中使用请求验证包 sanic-validation。
使用 sanic 20.3.0、sanic-validation 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)
但是,向/query 端点发送 GET 请求会导致 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'
为什么会出现此错误,我们该如何解决?谢谢!
【问题讨论】:
-
几个版本回来(我必须检查哪个),request_args 已被弃用,有利于其他更明确和清晰的方法来获取参数。看起来您使用的第三方软件包从未更新过。
标签: python python-3.x validation sanic