我的Django应用程序将处理来自第三方支付处理器的发布数据。我想使用Django表单来清理和处理这些数据,但POST变量的名称不是Django表单字段的有效名称。如何将这些重新映射到我的表单?
所以,我有一个表格:
class PayResponseForm(forms.Form):
status = forms.Charfield()
message = forms.CharField()
avs_code = forms.CharField(max_length=1)
我从第3部分网站获得的帖子如下:
request.POST['FinalStatus']
request.POST['MErrMsg']
request.POST['avs-code']
如何将这些post变量映射到我的表单字段?如果在我看来,我只是做request.POST['status'] = request.POST['FinalStatus']
之类的事情会导致问题吗?
答案 0 :(得分:1)
为了整洁,你可以使用request.POST['status'] = request.POST.pop('FinalStatus')
,否则使用你的方法就完全没问题了。
答案 1 :(得分:1)
您可以为表单init创建自己的dict:
if request.method == 'POST':
if need_to_convert_post(request):
post = {
'field1': None,
'field2': None,
'field3': None,
}
post['field1'] = request.POST.get('SomeOtherField1', None)
else:
post = request.POST
form = Form1(post)
else:
form = Form1()
并检测何时需要更改帖子:
def need_to_convert_post(request):
if 'uniqueCheckField' in request.POST:
return True
return False