【发布时间】:2020-06-16 19:12:03
【问题描述】:
我的看法-
from django.shortcuts import render, redirect
from .AuthForms import registerUserForm
from django.contrib import messages
from django.contrib.auth import login, authenticate
def registerUsers(request):
if request.method == 'POST':
ucf = registerUserForm(request.POST)
if ucf.is_valid():
ucf.save()
new_user = authenticate(username = ucf.cleaned_data['username'], password = ucf.cleaned_data['password1'])
login(request, new_user)
return redirect('content')
else:
ucf = registerUserForm()
return render(request, 'LoginAndSignUp/SignUpPage.html', {'ucf': ucf})
我的表格 -
我已经扩展了用户创建表单
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm , PasswordResetForm
from django import forms
class registerUserForm(UserCreationForm):
email = forms.EmailField(widget = forms.EmailInput(attrs={'placeholder':'Email', 'autocomplete':'off'}))
username = forms.CharField(widget= forms.TextInput(attrs={'placeholder':'Username','autocomplete':'off',}))
password1 = forms.CharField(widget= forms.PasswordInput(attrs={'placeholder':'Password'}))
password2 = None
class meta:
model = User
fields = ['username', 'email', 'password1']
class userLoginForm(AuthenticationForm):
username = forms.CharField(widget= forms.TextInput(attrs={'placeholder':'Username','autocomplete':'off'}))
password = forms.CharField(widget= forms.PasswordInput(attrs={'placeholder':'Password'}))
class userPasswordResetEmailForm(PasswordResetForm):
email = forms.EmailField(widget = forms.EmailInput(attrs={'placeholder':'Enter your email', 'autocomplete':'off',}))
class Meta:
model = User
fields = '__all__'
这是我的模板。我想一切都是正确的,但仍然没有保存电子邮件
<form novalidate action="" method="post">
{%csrf_token%}
<div class="fieldWrapper">
{{ucf.email.errors}}
{{ucf.email}}
</div>
<div class="fieldWrapper">
{{ucf.username.errors}}
{{ucf.username}}
</div>
<div class="fieldWrapper">
{{ucf.password1.errors}}
{{ucf.password1}}
</div>
<div style="margin-bottom: 4%;">
<span class="director">Already with us? <a href="{%url 'login'%}">Log In</a></span>
<div class="director">
<a href="{%url 'content'%}"><i class="fa fa-compass"></i> Explore anonymously</a>
</div>
</div>
<button class="primaryButton" type="submit">Sign Up</button>
</form>
电子邮件字段未将电子邮件保存到数据库,而用户名和密码已正确保存。有人请帮忙
【问题讨论】:
-
在调用 ucf.is_valid() 之前,ucf.data 是否包含 email 的值?
-
@Vincent 不,它不包含。我很困惑,因为用户名和密码的值保存没有任何问题。而且我还删除了以前使用相同方法并且表单正确保存所有内容的版本。
-
你能显示你使用的表单的html吗?
-
@Vincent 是的,我已经编辑了你可以看到的问题
-
你使用javascript触发表单提交吗?我看到表单没有任何操作。
标签: django django-models django-forms django-views