zoukankan      html  css  js  c++  java
  • Django之组件--forms

    forms组件(详细

    功能:

    1 校验字段功能
    2 渲染标签功能
    3 渲染错误信息功能
    4 组件的参数配置
    5 局部钩子
    6 全局钩子

    类中使用:

      1.定义

    from django import forms
    from django.forms import widgets
    from django.core.exceptions import ValidationError

      2.写一个类
      3.写属性

    class RegForm(forms.Form):
            name=forms.CharField(max_length=8,min_length=3,label='用户名',error_messages={'max_length':'超长了'},
            widget=widgets.TextInput(attrs={'class':'form-control'})
    

      4.局部钩子函数

    def clean_name(self):
            name=self.cleaned_data.get('name')
            if name.startswith('sb'):
                raise ValidationError('不能以sb开头')
            else:
                # 切记,如果正确,一定要返回name
                return name

      5.全局钩子函数

    def clean(self):
         #一系列逻辑判断
         #如果校验通过:返回cleaned_data
         #如果校验不通过:raise ValidationError('两次密码不一致'),错误放到__all__
         pass

    views中使用:

    def test(request):
        if request.method=='GET':
            regform=RegForm()
        else:
            regform=RegForm(request.POST)
        if regform.is_valid():
            #一般情况需要存数据库了
            pass
        else:
            error_all=regform.errors.get('__all__')
            # error_all=regform.errors['__all__']
            return render(request,'register.html',locals())

    模板中使用:

    <form action="">
    
        {% for foo in regform %}
            {{ foo.label }}:{{ foo }} <span>{{ foo.errors.0 }}</span>
        {% endfor %}
        <input type="submit"> <span>{{ error_all }}</span>
    
    </form>
  • 相关阅读:
    断开/删除 SVN 链接(.svn)的几种方法
    Android 中 ListView 常用属性合集
    Android 中 GridView 常用属性合集
    LeetCode-387-字符串中的第一个唯一字符
    LeetCode-374-猜数字大小
    LeetCode-290-单词规律
    LeetCode-278-第一个错误的版本
    LeetCode-383-赎金信
    LeetCode-367-有效的完全平方数
    LeetCode-350-两个数组的交集 II
  • 原文地址:https://www.cnblogs.com/xuechengeng/p/10309102.html
Copyright © 2011-2022 走看看