0

これはview.pyの私のログイン関数です

def login_user(request):
    form = LoginForm(request.POST or None )
    if request.method == 'POST':
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = authenticate(username=username, password=password)
            if user is not None:
                if user.is_active:
                    login(request, user)
                    # Redirect to a success page.
                    userprofile = UserProfile.objects.get(user = user)
                    request.session['userprofile'] = userprofile
                    request.session['familymembers'] = UserProfile.objects.filter(family = userprofile.family)

                    return redirect('/profile')
                else:
                # Return a 'disabled account' error message
                    messages.add_message(request, messages.ERROR, '.')
                    return redirect('/profile')

            else:
                messages.add_message(request, messages.ERROR, '.')
                return render_to_response('registration/login.html',{'form':form},RequestContext(request))

        return render_to_response('registration/login.html', {'form': form},RequestContext(request))
    elif request.method == 'GET':
        return render_to_response('registration/login.html',{'form':form},context_instance = RequestContext(request))

フォームis_valid()が失敗したとき、同じログイン ページにエラー メッセージが表示されました。ページを更新すると、確認ボックスのポップアップが表示され、フォームを再送信してくださいと表示されます。

私の質問は: この確認ボックスを回避することは可能ですか, 私は試しました

        return redirect('/', {'form': form},RequestContext(request))

これにより確認ボックスは回避されますが、有効なエラー メッセージは表示されなくなります。

4

2 に答える 2

0

リダイレクト応答自体には余分な情報は含まれていません。sessionシリアル化してフォームを保存し、form.data後でビューで取得できます。
または、Ajax を使用して送信すると、ページ全体が更新されません。

于 2013-02-21T12:00:05.433 に答える