ログイン用のタブと新しいユーザーの登録用のタブがあるログイン/登録テンプレート(私はDjangoを使用しています)ページがあります。つまり、1つのテンプレートに2つのフォームがあります。私はさまざまな見解を使ってそれらを処理しています。forms.pyの複数のフォームクラス
私は2クラスを置くforms.pyを作成したのが好きは、次のとおりです。ここで
from django import forms
class LoginForm(forms.Form):
username = forms.CharField(label="Username", max_length=30, widget=forms.TextInput(
attrs={'name': "username",
'id': "username",
'tabindex': "2",
'class': "form-control",
'placeholder': 'Username'}))
password = forms.CharField(label="Password", widget=forms.PasswordInput(
attrs={'name': "password",
'id': "password",
'tabindex': "2",
'class': 'form-control',
'placeholder': 'Password'}))
class RegisterForm(forms.Form):
firstNameReg = forms.CharField(label="First Name", max_length=30, widget=forms.TextInput(
attrs={'name': "firstname",
'id': "firstname",
'tabindex': "1",
'class': "form-control",
'placeholder': 'First Name'}))
lastNameReg = forms.CharField(label="Last Name", widget=forms.TextInput(
attrs={'name': "lastname",
'id': "lastname",
'tabindex': "1",
'class': 'form-control',
'placeholder': 'Last Name'}))
usernameReg = forms.CharField(label="Username", max_length=30, widget=forms.TextInput(
attrs={'name': "username",
'id': "username",
'tabindex': "1",
'class': "form-control",
'placeholder': 'Username'}))
emailReg = forms.CharField(label="Email", max_length=30, widget=forms.EmailInput(
attrs={'name': "username",
'id': "username",
'tabindex': "1",
'class': "form-control",
'placeholder': 'Email'}))
emailRegConfirm = forms.CharField(label="Email", max_length=30, widget=forms.EmailInput(
attrs={'name': "username",
'id': "username",
'tabindex': "1",
'class': "form-control",
'placeholder': 'Confirm Email'}))
passwordReg = forms.CharField(label="Password", widget=forms.PasswordInput(
attrs={'name': "password",
'id': "password",
'tabindex': "2",
'class': 'form-control',
'placeholder': 'Password'}))
passwordRegConfirm = forms.CharField(label="Password", widget=forms.PasswordInput(
attrs={'name': "confirm-password",
'id': "confirm-password",
'tabindex': "2",
'class': 'form-control',
'placeholder': 'Confirm Email'}))
は私のテンプレートです:ここでは
{% extends 'game_webstore/base.html' %}
{% load staticfiles %}
{% block body %}
<link rel="stylesheet" href="{% static "game_webstore/login_css.css" %}">
<script src="{% static "game_webstore/login.js" %}"></script>
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="panel panel-login">
<div class="panel-heading">
<div class="row">
<div class="col-xs-6">
<a href="#" class="active" id="login-form-link">Login</a>
</div>
<div class="col-xs-6">
<a href="#" id="register-form-link">Register</a>
</div>
</div>
<hr>
</div>
<div class="panel-body">
<div class="row">
<div class="col-lg-12">
<form id="login-form" action="" method="post" role="form" style="display: block;">
{% csrf_token %}
{% if error %}
<p style="color: red"><strong>* Wrong Username or Password.</strong></p>
{% endif %}
<div class="form-group">
{{ form.username.errors }}
{{ form.username }}
</div>
<div class="form-group">
{{ form.password.errors }}
{{ form.password }}
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<input type="submit" name="login-submit" id="login-submit" tabindex="4" class="form-control btn btn-login" value="Log In">
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-lg-12">
<div class="text-center">
<a href="" tabindex="5" class="forgot-password">Forgot Password?</a>
</div>
</div>
</div>
</div>
</form>
<form id="register-form" action="." method="post" role="form" style="display: none;">
{{ form.as_p }}
<div class="form-group">
{{ form.firstNameReg.errors }}
{{ form.firstNameReg }}
</div>
<div class="form-group">
{{ form.lastNameReg.errors }}
{{ form.lastNameReg }}
</div>
<div class="form-group">
{{ form.usernameReg.errors }}
{{ form.usernameReg }}
</div>
<div class="form-group">
{{ form.emailReg.errors }}
{{ form.emailReg }}
</div>
<div class="form-group">
{{ form.emailRegConfirm.errors }}
{{ form.emailRegConfirm }}
</div>
<div class="form-group">
{{ form.passwordReg.errors }}
{{ form.passwordReg }}
</div>
<div class="form-group">
{{ form.passwordRegConfirm.errors }}
{{ form.passwordRegConfirm }}
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<input type="submit" name="register-submit" id="register-submit" tabindex="4" class="form-control btn btn-register" value="Register Now">
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% endblock body %}
はまだ完了していませんこれは、私の見解である。
def register_view(request):
error = False
if request.method == "POST":
form = RegisterForm(request.POST)
if form.is_valid():
user = form.save(False)
user.set_password(user.password)
user.save()
user = authenticate(username=user.username, password=request.POST['password1'])
login(request, user)
return redirect('/')
私の問題は、テンプレートでは、最初のクラスのLoginForm(ユーザー名とパスワードd)、他のすべてのフィールドを無視します。この問題に関する提案はありますか?
あなたは両方のフォームクラスを使用していますか?少なくとも、あなたのビューとテンプレートを表示する必要があります。 –
@DanielRosemanテンプレートとビューを追加しました。 – ryuzakinho
実際にテンプレートをレンダリングする部分はどこですか? –