码迷,mamicode.com
首页 > 其他好文 > 详细

Django ==> Form 组件

时间:2017-12-14 04:04:29      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:tip   action   ror   red   form   需要   .com   files   word   

Django ==> Form 组件

目录: 

1.基本使用

2.form中字段和插件

3.自定义验证规则

4.动态加载数据到form中

Action:

1.基本使用

django 中的Form组件有一下功能:

  1.生成html标签

  2.验证用户数据(显示错误信息)

  3.html form 提交保留上次提交数据

  4.初始化页面显示内容

要使用 form 类,首先需要创建这个类,方法如下:

from django.forms import Form
from django.forms import widgets  #插件 可新增属性
from django.forms import fields   #字段

class MYForm(Form):  #继承Form类
    user = fields.CharField(
        widget = widgets.TextInput(attrs={id:i1,class:c1})
       #定义生成的html标签类型是input的text框,attrs:添加属性 id 为i1, class为:c1
)

    gender = fields.ChoiceFields(
        choices = ((1,),(2,),), #定义下来框的选型,元祖第一个值为option的value值,后面为html里面的值
        initial = 2,  #默认选中第二个option
        widget = widgets.RadioSelect # 插件表现形式为单选按钮
)

    city = fields.CharField(
        initial = 2, # 初始值2
        widget = widgets.Select(choices=((1,上海),(2,北京),)) #插件表现形式为下来框)

    pwd = fields.CharField(
        widget = widgets.PasswordInput(attrs={class:c1}, render_value=True)
        #插件形式为密码输入框
)

之后在views视图中定义:

from django.shortcuts import render,redirect
from .forms import MyForm

def index(request):
    if request.method =="GET":
        obj = MyForm() #没有值 ,在页面上渲染form中的标签
        return render(request,"index.html",{"form":obj})
    elif request.method == "POST":
        obj = MyForm(request.Post,request.FILES) #将POST提交出来的数据作为参数传递给自定义的Form类
        if obj.is_valid(): # obj.is_valid() 返回一个bool值,如果检查通过返回True,否则返回 False。
            values = obj.clean()  #拿到处理后的所有数据,键值对的形式
            print(values)
        else:
            errors = obj.errors #拿到未通过的错误信息,里面封装的都是对象
            print(errors)
        return render(request,"index.html",{"form":obj}
    else:
        return redirect("http://www.baidu.com")

模板定义:

<form action="/" method="POST" enctype="multipart/form-data">
    <p>{{form.user}} {{form.errors.user.0}}<p>  
    # {{form.user}} 生成标签, {{form.user.errors}} 生成第一个错误信息

    <p>{{form.gender}} {{form.errors.gender.0}} </p>
    <p>{{ form.city }} {{ form.errors.city.0 }}</p>
    <p>{{ form.pwd }} {{ form.errors.pwd.0 }}</p>
</form>

其他相关的标签

<form method="POST" enctype="multipart/form-data">
        {% csrf_token %}
            {{ form.xxoo.label }}
            {{ form.xxoo.id_for_label }}
            {{ form.xxoo.label_tag }}
            {{ form.xxoo.errors }}
            <p>{{ form.user }} {{ form.user.errors }}</p>
            <input type="submit" />
    </form>

 

2.form中字段和插件

 

3.自定义验证规则

 

4.动态加载数据到form中

Django ==> Form 组件

标签:tip   action   ror   red   form   需要   .com   files   word   

原文地址:http://www.cnblogs.com/zhongbokun/p/8035618.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!