Django登录工作,但注册不工作



我有一个登录页,当用户导航到主页时,会看到该登录页。这个页面既有登录表单,也有注册表单,的登录可以正常工作,但当我尝试注册用户时,什么都不会发生。我没有收到任何错误或警告。

视图.py

def login_page(request):
form = CreateUserForm()
context = {'form': form}
if request.user.is_authenticated:
return redirect('dashboard:dashboard')
elif request.method == 'POST':
if 'login-submit' in request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('dashboard:dashboard')
else:
messages.info(request, 'Username OR password is incorrect')
elif 'register-submit' in request.POST:
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
form.save()
user = form.cleaned_data.get('username')
messages.success(request, 'Account was created for ' + user)
return redirect('dashboard:login')
return render(request, 'main/login.html', context)

login.html

<form id="register-form" action="" method="POST" role="form" style="display: none;">
{% csrf_token %}
<div class="form-group">
{{form.username}}
</div>
<div class="form-group">
{{form.email}}
</div>
<div class="form-group">
{{form.password1}}
</div>
<div class="form-group">
{{form.password2}}
</div>
<div class="form-group">
<div class="row">
<div class="col-sm-6 center">
<button type="submit" name="register-submit" id="register-submit" tabindex="4" class="form-control btn btn-register" value="Register">Register</button>
</div>
</div>
</div>
</form>

表单.py

class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username', 'email', 'password1', 'password2']
widgets = {
'username': forms.fields.TextInput(attrs={'class': 'form-control', 'placeholder': 'Username'}),
'email': forms.fields.TextInput(attrs={'class': 'form-control', 'placeholder': 'Email Address'}),
'password1': forms.fields.TextInput(attrs={'class': 'form-control'}),
'password2': forms.fields.TextInput(attrs={'class': 'form-control'}),
}
def __init__(self, *args, **kwargs):
super(CreateUserForm, self).__init__(*args, **kwargs)
self.fields['password1'].widget = PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Password'})
self.fields['password2'].widget = PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Confirm Password'})

您可以尝试以下操作并共享打印语句的日志吗?

if form.is_valid():
form.save()
user = form.cleaned_data.get('username')
messages.success(request, 'Account was created for ' + user)
return redirect('dashboard:login')
else:
print (form.is_valid())   #form contains data and errors
print (form.errors)

最新更新