zoukankan      html  css  js  c++  java
  • Django Form one

    前戏:

        FromData:三种方式获取FromData

        1. 创建一个FromData 的对象,然后再用append 的方法追个添加键值对

           var formdata = new FormData();

           formdata.append('name','mihon');

           formdata.append('url','/app01/login');

        2.获取form元素对象,将它作为参数传入FormData对象中!

            var formobj = document.getElementById('form');

            var formdata = new FormData(formobj);

        3.利用form 元素对象的getFormData方法生成。

            var formobj = document.getElementById('form');

            var formdata = formobj.getFormData()

           

         ajax upload file:

            1.processData设置为false。因为data值是FormData对象,不需要对数据做处理

            2.contentType设置为false,不设置contentType值,因为是由<form>表单构造的FormData对象,

              且已经声明了属性enctype="multipart/form-data",所以这里设置为false。

            3.<form>标签添加enctype="multipart/form-data"属性

            4.cache设置为false,上传文件不需要缓存。

            eg.

                <form id="uploadForm" enctype="multipart/form-data">

                <input id="file" type="file" name="file"/>

                <button id="upload" type="button">upload</button>

                </form>

               

                $.ajax({

                    url: '/upload',

                    type: 'POST',

                    cache: false,

                    data: new FormData($('#uploadForm')[0]),

                    processData: false,

                    contentType: false

                    }).done(function(res) {

                    }).fail(function(res) {});

           

    source link:http://www.cnblogs.com/wupeiqi/articles/6144178.html

    导入模块:

        from django.froms import From

        from django.froms import widgets

        from django.froms import fields

       

    1.建立模板:

        class MyForm(From):

            user = fields.CharField(min_length=6)

           

        1.字段

            Field:

                require = True, 是否必填

                widget = {}, 插件

                label=None, 用于生成Label标签或显示内容

                initial=None, 初始值

                help_text='',                帮助信息(在标签旁边显示)

                error_messages=None,         错误信息 {'required': '不能为空', 'invalid': '格式错误'}

                show_hidden_initial=False,   是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)

                validators=[],               自定义验证规则

                localize=False,              是否支持本地化

                disabled=False,              是否可以编辑

                label_suffix=None            Label内容后缀

            CharField(Field)

                max_length=None,             最大长度

                min_length=None,             最小长度

                strip=True                   是否移除用户输入空白

            IntegerField(Field)

                max_value=None,              最大值

                min_value=None,              最小值

            DecimalField(IntegerField)

                max_value=None,              最大值

                min_value=None,              最小值

                max_digits=None,             总长度

                decimal_places=None,         小数位长度

               

            RegexField(CharField)

                regex,                      自定制正则表达式

                max_length=None,            最大长度

                min_length=None,            最小长度

                error_message=None,         忽略,错误信息使用 error_messages={'invalid': '...'}

               

           BaseTemporalField(Field)

           input_formats=None          时间格式化  

           DateField(BaseTemporalField)    格式:2015-09-01

           TimeField(BaseTemporalField)    格式:11:12

           DateTimeField(BaseTemporalField)格式:2015-09-01 11:12

          

           DurationField(Field)            时间间隔:%d %H:%M:%S.%f

               ...

           

           RegexField(CharField)

               regex,                      自定制正则表达式

               max_length=None,            最大长度

               min_length=None,            最小长度

               error_message=None,         忽略,错误信息使用 error_messages={'invalid': '...'}    

                       

               

            ModelChoiceField(ChoiceField)

                ...                        django.forms.models.ModelChoiceField

                queryset,                  # 查询数据库中的数据

                empty_label="---------",   # 默认空显示内容

                to_field_name=None,        # HTML中value的值对应的字段

                limit_choices_to=None      # ModelForm中对queryset二次筛选

                eg:

                    使用django提供的ModelChoiceField和ModelMultipleChoiceField字段来实现

                    from django import forms

                    from django.forms import fields

                    from django.forms import widgets

                    from django.forms import models as form_model

                    from django.core.exceptions import ValidationError

                    from django.core.validators import RegexValidator

                    class FInfo(forms.Form):

                        authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all())

            自定义验证规则:

                from django.forms import Form

                from django.forms import widgets

                from django.forms import fields

                from django.core.validators import RegexValidator

                class MyForm(Form):

                    user = fields.CharField(

                    validators=[RegexValidator(r'^[0-9]+$', '请输入数字'), RegexValidator(r'^159[0-9]+$', '数字必须以159开头')],

                )

           

        3.插件

            widgets.RadioSelect(choices=((1,'SH'),(2,'BJ'),))

            widgets.SelectFiled(choices=((1,'SH'),(2,'BJ'),)) #单选select

            widgets.MultipleChoiceFiled(choices=((1,'SH'),(2,'BJ'),)) #多选select

           

           

           

    2.View 函数处理:

        obj = MyForm(request.Post)  #获取MyFrom 对象,封装了前端发送过来的数据

        obj.is_valid() #规则验证通过返回True,否则返回False

        obj.clean() #在验证通过之后获取,前端提交的数据

        obj.errors() #验证失败,获取错误信息

            obj.errors.as_json() #返回json 类型的错误信息

            obj.errors.data() #return 直接数据类型

           

    3.HTML template处理

        {{obj.user}} #渲染input的标签

        {{obj.user.errors}}#渲染li标签,带有错误信息

        {{obj.errors.user.0}} #获取错误信息的字符串,<span>{{obj.errors.user.0}}<span/>

        其他标签:

            {{obj.user.label}}#生成label标签<!label = '用户名',默认label = 'False'>

            {{obj.user.label.id_for_label}}

            {{obj.user.label_tag}} #label_tag标签,click label 时选中input标签

           

    自定义验证规则:

         from django import forms

         form django.forms import fields

         form django.forms import widgets

         from django.core.exceptions import ValidationError

         form django.core.validators import RegexValidator

        

         class FInfo(forms.Form):

            username = fields.CharField(max_length=5,

                                        vaidators=[RegexValidator(r'^[0-9]+$','Enter a ')])

           

  • 相关阅读:
    redis安装
    查看数据库
    redis启动出错Creating Server TCP listening socket 127.0.0.1:6379: bind: No error
    java 面向对象基础
    SpringBoot简单公共返回类
    swift闭包_002_swift闭包
    swift的函数类型_001_swift函数类型基本使用
    swift函数_11_函数的嵌套使用
    swift函数_10_swift中函数基本使用
    swift可选类型_09_optional基本使用
  • 原文地址:https://www.cnblogs.com/mihon/p/8980901.html
Copyright © 2011-2022 走看看