使用Django创建帐户时需要电子邮件

时间:2018-01-14 15:17:19

标签: python django django-authentication

我有一个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的身份验证吗?或者我需要自己写所有的表格和处理等吗?

1 个答案:

答案 0 :(得分:0)

覆盖UserCreationForm的Meta类

在您的forms.py

from django.contrib.auth.forms import UserCreationForm

class YourUserCreationForm(UserCreationForm)
     class Meta:
         fields = ("username", "email")

并使用YourUserCreationForm代替