簡體   English   中英

將 json object 分配給 request.json in Z319C3206A7F10C17C3B9116D4A957646

[英]Assign a json object to request.json in flask

通常 request.json 用於訪問 json 對象發送到 flask 視圖。 我想分配一些東西給 request.json

from flask import request
print("request.json = ", request.json)
print("request.form['json'] = ", request.form['json'])
request.json = jsonify(request.form['json'])

導致

request.json =  None
request.form['json'] =  {
    "test": "test"
}
Traceback (most recent call last):
 ...
  File "/ajax_handlers.py", line 952, in X
    request.json = jsonify(request.form['json'])
  File "/opt/anaconda3/lib/python3.7/site-packages/werkzeug/local.py", line 365, in <lambda>
    __setattr__ = lambda x, n, v: setattr(x._get_current_object(), n, v)
AttributeError: can't set attribute

知道如何將 json object 分配給 request.json 嗎?

大概出於安全考慮,您不能替換請求 object 中的值; 它們來自客戶,並且保持原樣。 當您考慮時,這是一種很好的做法; 如果各種代碼嘗試以各種方式修改您的請求對象的數據,則會導致不一致且難以測試的代碼。

作為替代方案,您可以分配不屬於默認請求 object 的有意義的屬性。 例如,對於堆棧中的其他地方,也許您正試圖記住用戶的身份驗證為:

# Don't do this!
flask.request.json['authenticated_user'] = authenticated_user

這會弄亂原始請求數據; 不要那樣做。 它將使調試(更不用說安全性)成為一場噩夢。 更好的選擇:

# Do this instead
flask.request.authenticated_user = authenticated_user

您可以使用新屬性添加到現有請求,但不能 go 替換請求中的現有屬性。 你也不應該嘗試!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM