zoukankan      html  css  js  c++  java
  • form表单

    用户提交信息,一般是通过表单实现,

    数据操作提交,一般是通过表单做的
    表单提交信息到服务器然后服务器进行处理
     
     

    django forms是Django的表单处理库。依赖HttpRequest,它具有如下特点:

    (1)、快速自动生成HTML表单

    (2)、表单数据校验

    (3)、错误信息提示

    (4)、自动转换为python数据格式

     
     
    html
    <form action=''>
    <form>
     
    html的表单 仅仅为一个表单,不带验证,数据处理等功能
    在Django 的 form中,是一个经过封装的表单对象,可以通过它生成用户想要填写的表单,有强大的功能
     
    1、默认提供的表单样式太丑了,不符合我的项目需求能改吗?
    可以的
     
    2、为什么要使用django的表单呢?
    在Django 的 form中,是一个经过封装的表单对象,可以通过它生成用户想要填写的表单,有强大的功能
    自带有验证,数据处理的功能
     
    3、django的form是html中的form吗?
    Django的form最终会生成html的form,但有区别,功能更加强大,作用不同,
     
    modelForm:是和Model绑定的,数据模型,modelForm会自动匹配model里面的字段,然后生成相应的html表单,相关验证和处理的功能能在这个过程完成   
    Form:自定义Form
    可以根据自己的需要设定自己的Form
     
    一个用户可能会有多个表单,所以采用一个单独的form.py模块来进行管理
    使用的时候需要引用
    如 form form import FeedbackForm
     
    1. from models importFeedback
    2. classFeedbackForm(forms.ModelForm):
    3. classMeta:
    4. model =Feedback 在这里设置需要绑定的model
    5. fields = ('name','email','message',) 指定显示字段信息
     
    html中
    {{ feedback_form.as_p }}以p标签的方式生成
    1. <body>
    2. <formmethod='post'>
    3. {{ feedback_form.as_p }} 没有生成form需要自己加上去
    4. <inputtype='submit'value='Send'>
    5. </form>
    6. </body>
     
    表单验证不通过,会把错误信息直接返回给页面
     
    feedbacj_form = FeedbackForm(request.POST)    ????                   
     
     
    model里面的EmailField可以验证邮箱格式
     
    form 模型使得保存model数据非常方便
    a = Feedback()
    a.name = 'sss'
    a.email = 'fff'
    a.save()
     
    feedback_form.save() 表单和model是绑定的,调用这个方法时,会让绑定的
    model进行处理,保存数据
     
    url(r'^update/(?p<id>d)/$','form.views.update',name='update')
    instance为实例参数,告诉form当前的操作对象
    feedback_form = FeedbackForm(instance=feedback)传入实例,表单进行分析,生成相应html代码
    如果不这么绑定直接生成的话保存后会生成新的数据,如果绑定,就是对所绑定的实例进行修改
     
    forms.py太丑,可以直接在form 模型上添加css和js属性,可以和bootstrap实现form界面
     
    html当中提示的内容placeholder显示出来
     
    多对多可以多选
     
    多选情况:choices=((1,'aaa'),(2,'bbb'))
    choices = ((c.id,c.name) for c in Category.objects.all())
    feedback_form.fields['subject'].choices = choices
    需要在form里面指定默认的属性
     
    Form比modelForm更方便实现前端的页面,方便的添加css和js.
     
    没有写action默认提交给当前页
     
    用initial进行初始化
     
    验证顺序:
    默认验证
    clean_字段名()
    clean()
     
    form当中定义错误信息
    error_messages={'invalid':'请输入正确的Email格式'}
     
     
     
     

    当表单以method = 'post'提交的时候会出现的问题,加一个crsf就可以了
    <form method="post">
    {% csrf_token %}
     
     
     
     
    email = feedback_form.cleaned_data['email']
     
    date是日期,data是数据
     
     
    <form action="{% url 'comment_post' %}" method="post">
    {% csrf_token %}这个装饰器的作用是 不再做远程表单提交验证
    当form表单,method提交为post的时候会进行一个token验证,所以添上{% csrf_token %}这个才行
    http://www.ziqiangxuetang.com/django/django-csrf.html
     
    如果一个Form实体的数据是合法的,它就会有一个可用的cleaned_data属性。 这是一个包含干净的提交数据的字典,我们要报取数据的时候,就用这个,如上面代码中的print fr.cleaned_data['ip']
     
     
     
     
     
     
     
     
     
     





  • 相关阅读:
    烦人的警告 Deprecated: convertStrings was not specified when starting the JVM
    Python 推送RabbitMQ
    JavaScript-json数组排序
    CSS-返回顶部代码
    CSS-页面滑屏滚动原理
    CSS-图像映射
    CSS-下拉导航条
    CSS-background-position百分比
    CSS- 横向和纵向时间轴
    JavaScript-闭包深入浅出
  • 原文地址:https://www.cnblogs.com/wuqingzangyue/p/5749568.html
Copyright © 2011-2022 走看看