前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django中的form表单校验

Django中的form表单校验

作者头像
cywhat
发布2022-11-22 21:35:14
1.5K0
发布2022-11-22 21:35:14
举报
文章被收录于专栏:cywhatcywhat

前景:

我在使用django的form组件时,发现在view函数中的`form.is_valid()`在form表单校验未通过的情况下,返回的仍然是True,最后发现还是form表单的问题,异常函数并没有传递给view函数

问题代码:

代码语言:python
复制
form部分


def clean_email(self):
    """
    邮箱校验
    :return:
    """
    email_title = "验证码"
    code = random.randrange(1000, 9999)
    context = {
        'code': str(code)
    }
    email_template_name = 'tools_email.html'
    t = loader.get_template(email_template_name)
    html_content = t.render(context)
    email = self.cleaned_data['email']
    msg = EmailMessage(email_title,  
                       html_content,  
                       settings.EMAIL_FROM,  
                       [email]
                       )
    msg.content_subtype = 'html'
    exists = models.UserInfo.objects.filter(email=email).exists()
    if not exists:
        return ValidationError('邮箱未注册')   #注意就是这个异常函数ValidationError,没有将异常传给view
    send_status = msg.send()
    if not send_status:
        self.add_error("email", '发送邮箱失败,{}'.format(send_status['errmsg']))
    conn = get_redis_connection()
    conn.set(email, code, ex=120)
    return email
代码语言:python
复制
view部分

def send_sms(request):
    form = SendEmailSmsForm(request, data=request.POST)
    if form.is_valid():     #这里接收form传过来的异常,如果有异常则返回false,反之true
        return JsonResponse({'status': True})
    return JsonResponse({'status': False, 'error': form.errors})

原因:

我也不知道为什么 ValidationError 为什么没有把异常抛给view 更换另一个抛出异常的函数即可

解决:

代码语言:python
复制
return ValidationError('邮箱未注册')   #改为


self.add_error("email", "邮箱未注册")   # email为异常参数的field "邮箱未注册" 为报错文案
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题代码:
  • 原因:
  • 解决:
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com