【问题标题】:sanic-validation Python AttributeError: 'Request' object has no attribute 'raw_args'sanic-validation Python AttributeError:'Request'对象没有属性'raw_args'
【发布时间】: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


【解决方案1】:

您似乎使用的是旧版本的 sanic-validation 存储库。 正如您在例外中看到的那样:

第 59 行,在包装器中 AttributeError: 'Request' 对象没有属性 'raw_args'

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 2022-11-17
    • 1970-01-01
    • 2021-08-20
    • 2020-09-11
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多