使用不同的字段名称从第三方POST填充Django表单

时间:2012-11-20 16:54:15

标签: django post django-forms

我的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']之类的事情会导致问题吗?

2 个答案:

答案 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