0

CAPTCHA サポートを追加しようとしている django フォームがあります。ただし、これには request.session をフォームに渡す必要があります。それを達成するために、このコンストラクターをフォームに追加しました。

def __init__(self, request=None, *args, **kwargs):
    super(RegistrationForm, self).__init__(*args, **kwargs)
    self.request = request

次に、リクエスト オブジェクトを渡して RegistrationForm をインスタンス化します。ただし、フォームを送信すると、どのフィールドも消去されません。検証に失敗し、空白のフィールドをテンプレートに返します。失敗する登録コードは次のとおりです。

if request.method == 'POST':
    form = RegistrationForm(request.POST)
    if form.is_valid():
        ...do registration...
    else:
        return render(request, 'template.htm', {'form': form})

フィールドに何を入力しても、検証されません。実際、畑を掃除しているようにも見えません。登録ボタンを押した後、新しい空白のフォームが返されましたが、エラーも何もありません。

何か案は?

4

1 に答える 1

2

投稿したコードに基づいて、 のパラメーターに渡しrequest.POSTているように見えます。つまり、次と同等のことをしています:requestRegistrationForm

form = RegistrationForm(request=request.POST)

あなたが本当にやりたいことはこれです:

form = RegistrationForm(request=request, data=request.POST)

これを試して、うまくいくかどうかを確認してください。

于 2013-07-29T03:48:29.520 に答える