1

我的 Django 应用程序将处理来自第 3 方支付处理器的发布数据。我想使用 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']吗?

4

2 回答 2

1

为了整洁,您可以使用request.POST['status'] = request.POST.pop('FinalStatus'),否则使用您的方法非常好。

于 2012-11-20T17:08:20.970 回答
1

您可以为表单 init 创建自己的字典:

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
于 2012-11-20T19:41:34.167 回答