django - 要求用户在 UserCreationForm 中填写 Django 中的名字和姓氏等 User 模型的默认字段的最简单方法是什么?
问题描述
我正在使用 Django 内置的身份验证视图和表单来创建注册/登录系统,并且我正在使用 UserCreationForm 来注册用户,但只需要用户名。我只想让其他用户字段也是必需的。在不创建新用户模型的情况下,最简单的方法是什么?
这是我的表格:
# Create user registration form class.
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = User
fields = UserCreationForm.Meta.fields + ('first_name', 'last_name', 'email',)
以下是我的观点:
def register(request):
if request.user.is_authenticated:
return HttpResponseRedirect(reverse('index'))
elif request.method == 'GET':
form = CustomUserCreationForm()
elif request.method == 'POST':
form = CustomUserCreationForm(request.POST)
if form.is_valid():
form.save()
context = {
'user': request.user,
}
return HttpResponseRedirect(reverse('index'), context)
else:
return HttpResponseRedirect(reverse('register'))
else:
return HttpResponse("Project 3: TODO")
context = {
'form': form,
}
return render(request, 'registration/signup.html', context)
解决方案
您可以覆盖表单上的名字和姓氏字段以使其成为必填项。请注意,这不会改变数据库表仍然允许这些字段为空值的事实
class CustomUserCreationForm(UserCreationForm):
first_name = forms.CharField(required=True, max_length=150)
last_name = forms.CharField(required=True, max_length=150)
class Meta:
model = User
fields = UserCreationForm.Meta.fields + ('first_name', 'last_name', 'email',)
推荐阅读
- c++ - std::chrono::time_point 线程安全吗?
- snowflake-cloud-data-platform - 如何修复雪花中的 JSON 数据特殊字符问题(UTF-8 转换错误 - 加载了 � 的雪花表)?
- opencl - 使用更大的多个工作组大小 CL_KERNEL_PREFERRED_WORK_GROUP_SIZE_MULTIPLE 时性能更差
- java - 将密钥对条目中的公钥替换为可信证书、密钥库
- gcc - 这些avx2内在函数有什么错误,以及如何使用原始汇编程序
- javascript - JavaScript 有函数参数类型吗?
- javascript - 如何以更新的状态每 x 秒调用一次函数(React)
- javascript - 如何不在 Next.js 动态路由之间保持状态?
- java - Java中需要的返回类型
- javascript - 如何在Jquery中比较月份和年份的两个日期