15_提取表单错误信息

目录

  • 提取错误信息

提取错误信息

如果验证失败了,那么有一些错误信息是我们需要传给前端的。这时候我们可以通过以下属性来获取:
1. form.errors: 这个属性获取的错误信息是一个包含html标签的错误信息
2. ’form.errors.values(): 2.form.errors.get_json_data(): 这个方法获取到的是一个字典类型的错误信息。将某个字段的名字作为key, 错误信息作为值的一个字典 3.form.as_json(): 这个方法是将form.get_json_data()返回的字典dumpjson` 格式的字符串,方便进行传输
上述方法获取的字段的错误值,都是一个比较复杂的数据。比如以下:

{'username': [{'message': 'Enter a valid URL.', 'code': 'invalid'}, {'message': 'Ensure this value has at most 4 characters (it has 22).', 'code': 'max_length'}]}

那么如果我只想把错误信息放在一个列表中,而不要再放在一个字典中。这时候我们可以定义一个方法,把这个数据重新整理一份。实例代码如下:

from django import forms
class MyForm(forms.Form):
    username = forms.URLField(max_length=4)
    def get_errors(self):
        errors = self.errors.get_json_data()
        new_errors = {}
        for key,message_dicts in errors.items():
            messages = []
            for message in message_dicts:
            messages.append(message['message'])
            new_errors[key] = messages
        return new_errors

这样就可以把某个字段所有的错误信息直接放在这个列表中.

# 如注册数据校验
class MyRegisterView(View):
    """
    register view
    url: /user/register/
    """
    def get(self, request):
        return render(request, 'user/register.html')

    def post(self, request):
        # 1. 获取 并校验 数据
        form = RegisterForm(request.POST, request=request)
        if form.is_valid():
            # 2. 校验通过 注册创建用户
            # 2-1 获取需要的数据
            username = form.cleaned_data.get('username')
            mobile = form.cleaned_data.get('mobile')
            password = form.cleaned_data.get('password')
            try:
                User.objects.create_user(username=username, password=password, mobile=mobile)
            except Exception as e:
                print('e: {}'.format(e))
                return json_response(errno=Code.UNKOWNERR, errmsg='注册失败')
            # 3. 返回数据给前端
            return json_response(errmsg='注册成功')

        # 数据校验不通过
        error_msg_list = []
        for items in form.errors.values():
            error_msg_list.append(items[0])
        error_msg_str = ''.join(error_msg_list)   # 将错误信息拼接成字符串
        return json_response(errno=Code.PARAMERR, errmsg=error_msg_str)

原文地址:https://www.cnblogs.com/nichengshishaonian/p/11523487.html

时间: 2024-12-11 19:06:28

15_提取表单错误信息的相关文章

MVC5 自定义表单错误信息

1. 2. 3. MVC5 自定义表单错误信息

contact表单错误解决记录

在上篇表单验证中,过程中可谓坎坷,记录一下错误问题及解决方案. 我们用到的模板contact_form.html如下,其他urls.py自行去修改. <html> <head> <title>Contact us</title> </head> <body> <h1>Contact us</h1> {% if errors %} <ul> {% for error in errors %} <

汇编相关(ASCII码字符表 DEBUG命令 BIOS功能调用表 DOS功能调用表 汇编语言错误信息表)

汇编相关 一些关于汇编的常用东西,包括: ASCII码字符表 DEBUG命令 BIOS功能调用表 DOS功能调用表 汇编语言错误信息表 ASCII码字符表 DEBUG命令 BIOS功能调用表 DOS功能调用表 汇编语言错误信息表

用MongoDB数据库来管理办公系统中文档型的表单和信息——通用流程化应用审批单设计思路(二,续)

1.办公系统中文档的定义 办公系统中的文档就是指对数据不敏感的业务,例如流程中的审批单.信息专栏.数据上报.信息记录等.而对于这些信息的管理,特别是时效性较强的管理记录,仍采用关系型数据库进行管理. (1)流程中审批单 流程中审批单由功能按钮区.特殊功能区.业务表单区.附件区.审批意见区等区域构成,其中,业务表单区理论上包含附件和意见,但是由于附件和意见的业务特殊性,需要单独进行管理,剩下的业务表单就可以看作文档了. 在一些流程审批业务中,业务信息有的是以Excel或word文件等方式专递,这样

js提交表单错误:document.form.submit() is not a function

今天在写JS时,遇上这么个错误:"document.form.submit() is not a function",经过一番搜索,最终找到了修复方法. 这个错误一般是由于表单<form>-</form>中含有name="submit"时,提交时就会有冲突,这个错误常见于按钮上,如: 在Javascript做submit()的时候就会出现冲突,这时将name="submit"改成别的名字就可以了:即使不是按钮,在表单的输入

Linux curl 模拟form表单提交信息和文件

curl是一个命令行方式下传输数据的开源传输工具,支持多种协议:FTP.HTTP.HTTPS.IMAP.POP3.TELNET等,功能超级强大. 我今天想说的是程序开发中常用的模拟Form提交 1.GET提交 特别简单直接写url里面 2.POST提交    通过 --data/-d 方式指定使用POST方式传递数据 3.模拟form表单提交文件  --form/-F 模拟form表单提交文件 这个命令超级好用,再也不用为了写上传接口,而被迫写一个Form表单了 "[email protecte

如何使用validate.js进行动态添加和移除表单验证信息

表单是我们在开当中的常客,那么对表单的验证也是必须的,那么如何实现动态给表单添加验证规则呢? 方法: 1,动态添加验证规则 // 添加$("#addConnectUser").rules("add",{rules:{required:true,isString:true},messages:{required:"用户名为必填项",isString:"请输入规范字符"}});// 移除 $("#addConnectUs

使用ajax处理表单提交信息

很直观的需求 1.需要在不进行页面跳转的情况下进行表单验证,或者只是单纯的数据上传 2.不使用默认的提交方法,很low!和难受 这是表单 <form id="form"> <input type="text" name="user" id="user" placeholder="user"> <br> <input type="password"

php基础09:提取表单数据

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form method="POST" action="08-formData.php"> <p>姓名:&