request.data 每个变量的变化
request.data changes in every variable
我有这个代码:
initial_data = dict(request.data.copy())
reserve_data = dict(request.data.copy())
print(initial_data)
for key in initial_data.keys():
merchant_data = initial_data.get(key)
for sub_key in merchant_data.keys():
if sub_key in keys_to_change:
reserve_data[key].pop(sub_key)
reserve_data[key][values_to_change.get(sub_key)] = merchant_data.get(sub_key)
print(initial_data)
如你所见,我没有改变initial_data,但无论如何它都会改变
#before
{'22': {'domain': 'cashier.random.io', 'salt': 'ewrwerwe', 'active': 1, 'separate_cashier': '', 'additional_hosts': {}, 'tradingroom_url': '', 'crm': {'login': '', 'secret': '', 'url': ''}, 'currencies': ['USD', 'EUR'], 'payment_methods': {'12': {}}, 'processors': {}}}
#after
{'22': {'salt': 'ewrwerwe', 'separate_cashier': '', 'additional_hosts': {}, 'tradingroom_url': '', 'crm': {'login': '', 'secret':
'', 'url': ''}, 'currencies': ['USD', 'EUR'], 'payment_methods': {'12': {}}, 'processors': {}, 'host': None, 'is_active': None}}
有没有办法避免这种情况?谢谢大家
initial_data = dict(request.data.copy())
reserve_data = dict(request.data.copy())
请求数据的副本浅。
如果您要在内部修改内容,则需要改用 copy.deepcopy
:
initial_data = dict(copy.deepcopy(request.data))
reserve_data = dict(copy.deepcopy(request.data))
我有这个代码:
initial_data = dict(request.data.copy())
reserve_data = dict(request.data.copy())
print(initial_data)
for key in initial_data.keys():
merchant_data = initial_data.get(key)
for sub_key in merchant_data.keys():
if sub_key in keys_to_change:
reserve_data[key].pop(sub_key)
reserve_data[key][values_to_change.get(sub_key)] = merchant_data.get(sub_key)
print(initial_data)
如你所见,我没有改变initial_data,但无论如何它都会改变
#before
{'22': {'domain': 'cashier.random.io', 'salt': 'ewrwerwe', 'active': 1, 'separate_cashier': '', 'additional_hosts': {}, 'tradingroom_url': '', 'crm': {'login': '', 'secret': '', 'url': ''}, 'currencies': ['USD', 'EUR'], 'payment_methods': {'12': {}}, 'processors': {}}}
#after
{'22': {'salt': 'ewrwerwe', 'separate_cashier': '', 'additional_hosts': {}, 'tradingroom_url': '', 'crm': {'login': '', 'secret':
'', 'url': ''}, 'currencies': ['USD', 'EUR'], 'payment_methods': {'12': {}}, 'processors': {}, 'host': None, 'is_active': None}}
有没有办法避免这种情况?谢谢大家
initial_data = dict(request.data.copy())
reserve_data = dict(request.data.copy())
请求数据的副本浅。
如果您要在内部修改内容,则需要改用 copy.deepcopy
:
initial_data = dict(copy.deepcopy(request.data))
reserve_data = dict(copy.deepcopy(request.data))