1

私の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']

これらの投稿変数をフォームフィールドにマップするにはどうすればよいですか?私の見解では、私が次のようなことをした場合、問題が発生しますrequest.POST['status'] = request.POST['FinalStatus']か?

4

2 に答える 2

1

整頓のために、を使用することができますrequest.POST['status'] = request.POST.pop('FinalStatus')。そうでない場合は、アプローチを使用することはまったく問題ありません。

于 2012-11-20T17:08:20.970 に答える
1

forminitの独自の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
于 2012-11-20T19:41:34.167 に答える