如何将属性设置为 Flask 请求?
How to set an attribute into Flask request?
注意:这不是
的副本
案例:完全了解您将要做什么并不是正确的方法,但现在是 12 月 29 日,能够进行真正修复的人员将在一周内空缺。 最近更改后,一个页面(或多个页面?)不再是 POST JSON,而是 FORM。您可以通过将 request.form
转换为 JSON 并将其拍打成 request.json
来解决这个问题一周 - 如果它允许您这样做的话。
我试过的是:
if not request.json and request.form:
setattr(request, "json", json.dumps(request.form))
我收到投诉:
...
File "/usr/lib/python3/dist-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./routes.py", line 134, in api_file_id
setattr(request, "json", json.dumps(request.form))
File "/usr/lib/python3/dist-packages/werkzeug/local.py", line 364, in <lambda>
__setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v)
AttributeError: can't set attribute
能够做到这一点将使这个泡泡糖修复变得小巧且易于定位(在路由功能中)。备选方案变得混乱...
我缺乏必要的知识来理解为什么我会收到此错误,也没有足够的帮助 - 为什么不能设置属性。
我是不是做错了什么,或者由于某种原因这应该是不可能的?
底层 BaseRequest
对象是不可变的,因此您无法修改 request
。您可能需要创建一个新变量来保存 json,这意味着您需要更新其他代码来引用您的新变量,而不是 request.json
,例如:
if not request.json and request.form:
myjson = json.dumps(request.form)
注意:这不是
案例:完全了解您将要做什么并不是正确的方法,但现在是 12 月 29 日,能够进行真正修复的人员将在一周内空缺。 最近更改后,一个页面(或多个页面?)不再是 POST JSON,而是 FORM。您可以通过将 request.form
转换为 JSON 并将其拍打成 request.json
来解决这个问题一周 - 如果它允许您这样做的话。
我试过的是:
if not request.json and request.form:
setattr(request, "json", json.dumps(request.form))
我收到投诉:
...
File "/usr/lib/python3/dist-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "./routes.py", line 134, in api_file_id
setattr(request, "json", json.dumps(request.form))
File "/usr/lib/python3/dist-packages/werkzeug/local.py", line 364, in <lambda>
__setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v)
AttributeError: can't set attribute
能够做到这一点将使这个泡泡糖修复变得小巧且易于定位(在路由功能中)。备选方案变得混乱...
我缺乏必要的知识来理解为什么我会收到此错误,也没有足够的帮助 - 为什么不能设置属性。
我是不是做错了什么,或者由于某种原因这应该是不可能的?
底层 BaseRequest
对象是不可变的,因此您无法修改 request
。您可能需要创建一个新变量来保存 json,这意味着您需要更新其他代码来引用您的新变量,而不是 request.json
,例如:
if not request.json and request.form:
myjson = json.dumps(request.form)