0

同じページに 2 つのフォームを表示する方法は? 私はあなたの助けに感謝します

これは私のviews.pyです:

def register_user(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/profile/')
    if request.method == 'POST':
        form = RegistrationForm(request.POST)
        if form.is_valid():
            user = User.objects.create_user(username=form.cleaned_data['username'], email=form.cleaned_data['email'], password=form.cleaned_data['password'])
            user.save()
            user_profil = UserProfil(user=user, name=form.cleaned_data['name'], last_name=form.cleaned_data['last_name'],city=form.cleaned_data['city'])
            user_profil.save()
            return HttpResponseRedirect('/profile/')
        return render_to_response('access.html', {'formRegister':form}, context_instance=RequestContext(request))
    else:
        form = RegistrationForm()
        return render_to_response('access.html', {'formRegister':form}, context_instance=RequestContext(request))


def login_user(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/profile/')
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if forml.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user_profil = authenticate(username= username, password=password)
            if user_profil is not None:
                login(request, user_profil)
                return HttpResponseRedirect('/profile/')
            else:
                return HttpResponseRedirect('/login/')
        return render_to_response('access.html', {'formLogin':form}, context_instance=RequestContext(request))
    else:
        form = LoginForm()
        context = {'formLogin':form}
        return render_to_response('access.html', context, context_instance=RequestContext(request))

これは私の urls.py です

url(r'^access/$','users.views.register_user'),
url(r'^access/$','users.views.login_user'),

access.html:

<form action="" method="post">{%csrf_token%}
{{ formRegister.as_p }}
<p><input type="submit" value="Rejestruj"/></p>
</form>

<hr>


<form action="" method="post">{%csrf_token%}
{{ formLogin.as_p }}
<input type="submit" value="Login"/>
</form>

1 つのテンプレート (access.html) と 2 つのビューがあります。

urls.py(order) を置き換えると:

url(r'^access/$','users.views.login_user'),
url(r'^access/$','users.views.register_user'),

ログインフォームのみ表示

4

1 に答える 1

1

returnステートメントでフォーム変数の名前を変更するとどうなりますか

{'formRegister':form}

もう1つは:

{'formLogin':form}

アップデート:

URL ファイルでは、次のことができます。

url(r'^access/login/$','users.views.login_user'),
url(r'^access/register/$','users.views.register_user'),

同じテンプレートが引き続き使用されますが、フォームを処理するビューが異なります。

その他の代替手段は次のとおりです。

  1. 2 つのフォームの action 属性に異なる URL を設定します。次に、2 つの異なるフォームを処理するための 2 つの異なるビュー関数を用意します。

  2. POST データから送信ボタンの値を読み取る。どの送信ボタンがクリックされたかを確認してから、ロジックを処理できます。

于 2012-10-30T12:10:14.257 に答える