我有一个Django项目,该项目要求用户能够创建帐户来访问内容。
我使用UserCreationForm
来执行此操作。
在views.py
我有
def register_user(request):
if request.method == "POST":
user_form = UserCreationForm(request.POST)
if user_form.is_valid():
new_user = user_form.save(commit=False)
new_user.set_password(user_form.cleaned_data["password1"])
new_user.save()
template = "account/registration/registration_done.html"
context = {"new_user": new_user}
else:
# TODO: Handle exception
raise BaseException
elif request.method == "GET":
user_form = UserCreationForm()
template = "account/registration/register.html"
context = {"user_form": user_form}
else:
raise NotImplementedError
return render(request, template, context=context)
然后我的模板是:
{% extends "base.html" %}
{% block title %}Create an Account{% endblock %}
{% block content %}
<h1>Create an Account</h1>
<form action="." method="post">
{{ user_form.as_p }}
{% csrf_token %}
<p><input type="submit" value="Create my account"></p>
</form>
{% endblock %}
哪个有效。但是,当显示创建帐户表单时,它只包含用户名,密码和密码验证字段。用户无需输入有效的电子邮件。
我要做的是要求用户输入电子邮件地址,然后向他们发送电子邮件以确保地址有效,并且他们有权访问等等。 / p>
当然,这是一个足够普遍的模式,已经有一种方法可以实现使用Django的身份验证吗?或者我需要自己写所有的表格和处理等吗?
答案 0 :(得分:0)
覆盖UserCreationForm的Meta类
在您的forms.py
中from django.contrib.auth.forms import UserCreationForm
class YourUserCreationForm(UserCreationForm)
class Meta:
fields = ("username", "email")
并使用YourUserCreationForm代替