【问题标题】:Python Django Forms Email Validation clean_email doesn't workPython Django 表单电子邮件验证 clean_email 不起作用
【发布时间】:2016-09-01 09:09:45
【问题描述】:

admin.py:

from django.contrib import admin
from .forms import SignUpForm
from .models import SignUp

class SignUpAdmin(admin.ModelAdmin):
    list_display = ["__unicode__", 'timestamp', 'updated']
    form = SignUpForm

admin.site.register(SignUp)

models.py:

from __future__ import unicode_literals
from django.db import models

class SignUp(models.Model):
    full_name = models.CharField(max_length=120, blank=True, null=True)
    email = models.EmailField()
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)

    def __unicode__(self):
        return self.email

forms.py:

from django import forms
from .models import SignUp

class SignUpForm(forms.ModelForm):
    class Meta:
        model = SignUp
        fields = ['full_name', 'email']

    def clean_email(self):  # It seems that this clean_email method doesn't work
        email = self.cleaned_data.get('email')
        email_base, provider = email.split('@')
        domain, extension = provider.split('.')
        if not extension == 'edu':
            raise forms.ValidationError("Please use a valid .EDU email address")
        return email

如果我们在管理面板中添加用户并且电子邮件没有“edu”扩展名,则应该引发 ValidationError。但这不会发生。为什么?

【问题讨论】:

    标签: python django forms validation email


    【解决方案1】:

    您还没有告诉管理员使用您的自定义 ModelAdmin 类。

    这样做:

    admin.site.register(SignUp, SignUpAdmin)
    

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 2018-05-13
      • 1970-01-01
      • 2017-05-27
      • 2012-08-19
      相关资源
      最近更新 更多