django - Django 使用表单创建新用户
问题描述
我试图允许人们通过提交表单来创建帐户。这目前只是继续登录屏幕,但没有创建实际用户或出现任何错误。调试当前已启用。
我尝试在 user_form.is_valid() 之后添加 else 语句,以确保它不是无效的,但同样的问题正在发生。我猜这是表单保存方式的问题,但我对 Django 较新,因此不胜感激。
看法:
def home(request):
if request.user.is_authenticated:
return redirect('user_dashboard')
else:
user_form = CreateUserForm(request.POST or None)
if request.method == 'POST':
if user_form.is_valid():
user_form.save()
context = {
'user_form': CreateUserForm,
}
return render(request, 'Main/index.html', context)
模型:
class CreateUserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput())
confirm_password = forms.CharField(widget=forms.PasswordInput())
class Meta:
model = User
fields = [
'username',
'email',
'password',
]
def clean_password(self):
password = self.cleaned_data.get("password")
confirm_password = self.cleaned_data.get("confirm_password")
if password != confirm_password:
raise forms.ValidationError(
"password and confirm_password does not match"
)
else:
return password
解决方案
你的问题在这里:
context = {
'user_form': CreateUserForm,
}
它应该是 :
context = {
'user_form': user_form,
}
干杯:)
推荐阅读
- angular - Scully 找不到空的路线
- reactjs - React Js Hooks / props.Children on chatbot
- java - 使用 Spring Boot 和基于 JWT 令牌的身份验证在 SecurityContextHolder.getContext().getAuthentication().getPrincipal() 中获取匿名用户
- c# - 以人类可读的格式显示表达式
- php - PHP-FPM 无法访问主目录中的文件 — stat EACCES — “找不到文件”
- php - 双打在单元测试中丢失小数位
- java - 如何在 Gradle 中创建两个任务
- julia - 如何在 Julia 中读取二进制文件?
- c# - 具有多个功能按钮的 C# WPF 扩展器
- c# - 使用自定义文件名清理日志文件夹