zoukankan      html  css  js  c++  java
  • django 表单操作

    django带有一个form库,django.forms。将要处理的HTML的<Form>定义一个form类,放到一个文件中:forms.py文件中。

    from django import forms
    
    class Login(forms.Form):
            username = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control','placeholder':'请输入用户名'}))
            email = forms.EmailField()
            ip = forms.GenericIPAddressField(error_messages={'required':('IP不能为空'),'invalid':('格式错误')})

    每一个字段默认都是必填,要使email成为可选项,需要指定required=False;forms把每个字段的显示逻辑都分离到一部组件(widget)中,可以使用widget=forms.Textarea替换掉默认组件。message = forms.CharField(widget=forms.Textarea)

    在视图中使用Form对象

    from app04 import forms
    import json
    
    def index(request):
        ret = {'data':None,'error':''}
        obj = forms.Login()
        ret['data']=obj
        if request.method == 'POST':
            checkForm = forms.Login(request.POST)       #绑定数据到表单
            checkresult = checkForm.is_valid()
            if checkresult:
                print(checkForm.cleaned_data)
           print(checkForm.cleaned_data['username'])
    else: errorsObj = checkForm.errors
    #       firstErrorMsg = checkForm.errors.as_data() firstErrorMsg
    = checkForm.errors.as_json() ErrorMsg = json.loads(firstErrorMsg).values() EndMsg = list(ErrorMsg)[0][0]['message'] ret['error'] = EndMsg ret['data'] = checkForm #出现错误后,不会清空原来的输入 return render_to_response('login_form.html',ret) return render_to_response('login_form.html',ret)

    对于绑定的表单可以使用

      is_valid() 方法来执行验证并返回一个表示数据是否合法的布尔值

      cleaned_data 包含表单中定义的合法字段

      errors属性可以获得错误信息的一个字典,这个我暂时没有测试出来,有点问题。

      as_data()方法返回一个字典,它映射字段到原始的ValidationError实例,当输入错误的IP格式时,

        {'ip': [ValidationError(['格式错误'])]}

      as_json()返回JSON序列化后的错误,当输入错误的IP格式时返回

        {"ip": [{"message": "u683cu5f0fu9519u8bef", "code": "invalid"}]}

    login_form.html中:

    <form action="/app04/index/" method="POST">
                    用户名:{{ data.username }}
                    邮箱:{{ data.email }}
                    IP: {{data.ip}}
    
            <!--    {{ form.as_table }}    -->
                    <input type="submit" value="提交">
                    <div>
                            {{ error }}
                    </div>
    </form>
    

      表单渲染选项

      {{ form.as_table }}以表格的形式将它们渲染在<tr>标签中

      {{ form.as_p }}以表格的形式将它们渲染在<p>标签中

      {{ form.as_ul }}以表格的形式将它们渲染在<li>标签中

      需要自己提供<table>或<ul>元素

    效果

  • 相关阅读:
    Hadoop 2.6.0-cdh5.4.0集群环境搭建和Apache-Hive、Sqoop的安装
    Hive数据仓库笔记(三)
    Hive数据仓库笔记(二)
    Hive数据仓库笔记(一)
    HBase新的客户端接口
    Hadoop之Secondary NameNode
    hadoop2.x源码编译
    基于新浪SAE平台的微信开发
    分布式存储系统-HBASE
    编程珠玑--心得
  • 原文地址:https://www.cnblogs.com/homle/p/8620791.html
Copyright © 2011-2022 走看看