博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
form表单
阅读量:7037 次
发布时间:2019-06-28

本文共 2237 字,大约阅读时间需要 7 分钟。

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

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

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就可以了
{% csrf_token %}
 
 
 
 
email = feedback_form.cleaned_data['email']
 
date是日期,data是数据
 
 
{% csrf_token %}这个装饰器的作用是 不再做远程表单提交验证
当form表单,method提交为post的时候会进行一个token验证,所以添上{% csrf_token %}这个才行
 
 
如果一个Form实体的数据是合法的,它就会有一个可用的cleaned_data属性。 这是一个包含干净的提交数据的字典,我们要报取数据的时候,就用这个,如上面代码中的
print fr.
cleaned_data
['ip']
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/wuqingzangyue/p/5749568.html

你可能感兴趣的文章
cocos2d坐标系
查看>>
Android.mk的用法和基础
查看>>
CentOS7 安装Docker
查看>>
笔记本高分辨软件兼容问题,字体太小或模糊
查看>>
分布式存储系统可靠性系列五:副本放置算法 & CopySet Replication
查看>>
常用电线负载的电流和功率
查看>>
TreeMap升序|降序排列和按照value进行排序
查看>>
redis在windows10上跑起来
查看>>
面试题目:反转链表的算法实现
查看>>
xss挖掘初上手
查看>>
SGU 116 Index of super-prime
查看>>
简化Web开发的12个HTML5-CSS框架
查看>>
C#温故而知新学习系列之.NET运行机制—.NET中非托管代码是指什么?(二)
查看>>
25个漂亮的国外绿色网站设计作品分享
查看>>
C++中delete与delete[]
查看>>
iphone:URL initWithString 返回为空
查看>>
ASP.NET页面间数据传递的9种方法
查看>>
#百度360大战# 我为什么要支持360
查看>>
html5指南--3.拖拽功能的实现
查看>>
绘图: Python matplotlib简介
查看>>