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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值