django - 自定义验证在 forms.py 中不起作用
问题描述
我想验证我的电子邮件字段,例如:如果电子邮件包含[gmail.com,outlook.com,yahoo.com]
,那么我想提出验证错误。但它不起作用,我不知道我做错了什么。请帮帮我
视图.py
from django.shortcuts import render
from django.views.generic import View
from access.utils import is_valid
from access.mixin import HttpResponseMixin
import json
from access.forms import Employer_Form
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator
@method_decorator(csrf_exempt,name = 'dispatch')
class Emp_Registration_view(View,HttpResponseMixin):
def post (self,request,*args,**kwargs):
data = request.body
json_data = is_valid(data)
if not json_data:
return self.render_http_response(json.dumps({'msg':'Please send valid json only'}),status=400)
emp_data = json.loads(data)
form= Employer_Form(emp_data)
if form.is_valid():
form.save(commit=True)
return self.render_http_response(json.dumps({'msg':'Registered Successfully'}))
if form.errors:
return self.render_http_response(json.dumps(form.errors),status=400)
表格.py
from access.models import Employer_Registration
from django import forms
class Employer_Form(forms.ModelForm):
def clean_email(self):
email = self.cleaned_data['emp_email']
email_lists = ['gmail.com','yahoo.com','outlook.com','hotmail.com']
data = emp_email.split('@')
if data in email_lists:
raise forms.ValidationError("email is not valid")
return email
class Meta:
model = Employer_Registration
fields = '__all__'
解决方案
你的方法应该被命名clean_emp_email
,因为字段被命名emp_email
。否则不会被调用。
推荐阅读
- java - 以编程方式在相对布局中创建线性布局
- c# - 在第二个 DataGridView 中显示剩余值
- sql - 从绑定到特定主键的不同行中添加值
- vb.net - 在 VB.net 中合并多个 Word 文档时,如何防止“应用程序正忙”错误?
- c# - 具有作为基类 ActionFilterAttribute 的类的问题
- c# - 在不需要线程池时处理 async/await
- javascript - 使用正则表达式提取电子邮件字段
- python - 如何从基类中的派生类调用方法?
- laravel - 如何允许用户使用 VueJS Router/SPA 公开访问某些路由
- sqlite - 使用 QSqlQuery 的“无法获取行”错误