• 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>
  • 相关阅读:
    准备用协程模拟经典的生产者消费者
    重载操作符号
    对象池
    ssh加key
    oracle存储过程(PL/SQL)
    获取服务器ip地址
    【STL系列】结构体排序
    strtol sort snprintf snscanf strtok
    cxGrid动态创建带CheckBox列时遇到的问题...
    Windows2003 安装PostgreSQL9.0 UUID解决‘ERROR:无法载入程式库’问题
  • 原文地址:https://www.cnblogs.com/xuechengeng/p/10309102.html
Copyright © 2020-2023  润新知