簡體   English   中英

如何使用 Django 中的內置 EmailValidator 驗證 UserCreationForm 的 email 字段?

[英]How to validate the email field of UserCreationForm using the built-in EmailValidator in Django?

現在,如果我在我的 UserCreationForm 中輸入無效數據並提交它,頁面會重新加載但不會顯示任何錯誤。 我希望 Django 中的 EmailValidator 驗證器顯示錯誤。 我嘗試將驗證器屬性添加到 email 字段,但它沒有做任何事情。

以下是我的看法:

from django.contrib.auth import authenticate, login, logout
from django.http import HttpResponse, HttpResponseRedirect, Http404
from django.shortcuts import render
from django.urls import reverse

from .models import CustomUserCreationForm

# Create your views here.
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)

def logout_view(request):
    logout(request)
    return HttpResponseRedirect(reverse('login'))

這是我的模型:

from django.contrib.auth.models import AbstractUser, AbstractBaseUser
from django import forms
from django.contrib.auth.models import User
from django.db import models
from django.contrib.auth.forms import UserCreationForm
from django.core.validators import EmailValidator

# Create your models here.

# Customer class.
class CustomUser(User):
    REQUIRED_FIELDS = ['email', 'first_name', 'last_name']

# Create user registration form class.
class CustomUserCreationForm(UserCreationForm):

    first_name = forms.CharField(required=True, max_length=150, help_text='Required.')
    last_name = forms.CharField(required=True, max_length=150, help_text='Required.')
    email = forms.CharField(required=True, max_length=150, help_text='Required.', validators=[EmailValidator], error_messages={'invalid': 'This does not look like an email address.'})

    class Meta:
        model = User
        fields = UserCreationForm.Meta.fields + ('first_name', 'last_name', 'email',)
    # TODO: show an error message when email is incorrectly formatted.
    # TODO: make email field unique and show an error message when it was already used.

CustomUserCreationForm中使用 Django 的內置EmailField

email = forms.EmailField(...)

也看到這個(驗證電子郵件)(form.clean) ,閱讀這個以顯示單個表單字段的錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM