PythonWeb开发基础教程 第7章 表单.pdf
《PythonWeb开发基础教程 第7章 表单.pdf》由会员分享,可在线阅读,更多相关《PythonWeb开发基础教程 第7章 表单.pdf(55页珍藏版)》请在咨信网上搜索。
1、Python Web开发基础教程(Django版)第7章表单本章主要内容:,表单基础,Django表单进阶 模型表单资源Ajax7.1表单基础本节主要内容HTML表单 Django 表单7.1.1 HTML 表单 一个典型的HTML表单如下。label foXdata,请输入数据:v/label input type=submit value二“提交“,该表单由静态HTML实现,要直接在浏览器中访问该表单,需将其放在Django项目的static文件夹币。静态资源配置的详细内容请参考2.L4节。个表单主要包括提交地址、请求方法和表单元素三个 部分。表单的action属性指定的URL为提交地址,
2、它接收表单数 据,并执行相应的处理。表单的method属性指定请求方法,通常是GET或POST。通常在不改变服务器数据时用GET方法,提交的数据 会显示在URL中。要改变服务器数据时用POST方法,提交的数据封装在消 息栋中。-qango项目的模板文件是一个HTML文件,可在其中定义HTML表单。可通过视图将数据传递给 横板,然后使用模板变量将其填充到HTML表单。Django模板中的HTML表单典型结构如下。,%csrf_token%,请输入数据:,input type=submit value=提交 个current_data 变量。相比于前面的HTML表单,模板中多了一个%csrf_to
3、ken%标签和一将此模板(temform.html)放在项目的templates文件夹中,以便在视图中使用。,默认情况下,必ango会对所有的POST请求执行CSRF(跨站点请求伪造)保护。%csrf_token%标签用于获敢CSRF令牌,如果没有该标签,Django会拒绝表单请求。current_data 用于将视图传递给模板的数据插入到当前位置。7.1.2 Django 表单,模板中的HTML表单属于静态编码,要改变表单就必须修 改模板。Djang9表单通过扩展django.forms.Form类可在视图中动 态生成表单。使用Django表单的基本步骤包括:定义表单类 定义使用表单类和模板
4、的视图 定义表单模板 配置URL访问视图1.定义表单类#c h a pte ryc h a pte ryv i e ws.py from django import forms,class dataForm(forms.Form):data=forms.CharField(label=请输入数据)自定义的表单类dataForm继承了django.forms.Form类,它包含一个data字段。字段 data 的类型为forms.CharField。表单data字段会被渲染为一个label元素和一个input元素。表单字段的label参数指定在表单渲染生成的label元素中显示的字符串。2.定义
5、使用表单类和模板的视 在视图中需要创建表单类的实例对象,并将其作为参数传递给模板,代码如下。,def useDataForm(request):,if request.method=TOST1:form=dataForm(request.POST)#使用接收到的数据创建表单 msg二”已完成数据提交!”,else:,form=dataForm()#创建空白表单,msgJ初始表单,,return render(requestz temdataform-html,form1:form/msgimsg)在直接使用HTML表单时,视图将接收到的数据传递给模板,以便在响应页面中回显数据。在使用qjang
6、o表单时,视图使用接收到的数据创建表单,先将数据填入表单字段,再将表单对 象传递络模斐。3.定义表单模板 模板通过变量使用视图传递的表单对象,代码如下。%csrf_token%form input type=submit”value二“提交“msg4.配置URL访问视图 URL配置代码如下。from django.urls import path from.import views u ripatterns=pathCdform/,views.useDataForm),7.2 Django表单进阶本节主要内容 表单字段渲染方式 表单字段类型和参数,使用小部件 字段校验.使用表单数据 手动渲染字
7、段 遍历字段 表单集7.2.1表单字段渲染方式 Django提供了 3种表单字段渲染方式。(form.as_table:表单式样式,默认方式。将字段渲染为 包装在表格tr元素中的表单元素。-form.as_p 段落样式,将字段渲染为包装在p元素中的段落。form.as_ul:列表样式,将字段渲染为包装在元素中 的列表项。7.2.2表单字段类型和参数 表单字段的定义包含字段名、字段类型和字段参数3个部分,示例如下。class dataForm(forms.Forin):data=forms.CharField(label=请输入数据)#定义表单字段 其中,data为字段名,字段渲染生成的labe
8、l元素的for属性值为id_data”,生成的input元素的name属桂值为“data”、id庸性值为id_data”。CharField为字段类型,label为字段参数。一 django.forms模块定义了一系列字段类来描述表单字段的类型。字段类型决定了Django如何执行下列操作。字段被渲染成哪种HTML表单元素。是否必须为字段提供数据。默认情况下,所有类型的字段都必须提交数据。如何校验字段数据。如何将数据规范化为Python数据。表7-1常用表单字段类字段类默认渲染成的表单兀素Python数据的类型BooleanFieldCheckboxinputTrue 或 FalseCharFi
9、eldTextinput字符串ChoiceFieldSelect字符串DateFieldDateinputdatetime.dateTimeFieldTimeinputdatetime.timeDecimalFieldNumberinput(未本地化时)或TextinputdecimalFloatFieldNumberinput(未本地化时)或TextinputfloatIntegerFieldNumberinput(未本地化时)或Textinputinteger默认渲染成的表单元素Python数据的类型字段类EmailFieldEmailinput字符串FileFieldClearableF
10、ilelnput上传的文件FilePathFieldSelect字符串ImageFieldClearableFilelnput上传的图片文件GenericIPAddressFieldTextinput字符串MultipleChoiceFieldSelectMultiple字符串列表RegexFieldTextinput字符串UUlDFieldTextinputUUID1.required默认情况下,所有类型的表单字段的required属性值 均为True,即必须为字段提供数据。如果提供的是 None或空字符串,校验数据时会触发ValidationError 异常。表单字段的clean。方法用于
11、执行数据清理操作,验证 数据的有效性。数据有效时,clean。方法会返回该数 据,否则触发ValidationError异常。2.labellabel参数用于设置表单字段被渲染为HTML 元素时的文本内容,示例代码如下。,class test(forms.Form):,.name二forms.CharField(label=请输入姓名)print(test(),请输入姓名:在创建表单时,可使用auto_id=False来简化渲染结果,示例代码如下。,d=test(auto_id=False)print(d)请输入姓名:3.label suffix label_suffix属性用于设置表单字段被
12、渲染为HTML 元素丽的文本内容的后缀,默认后缀为英文冒号“:,示例代码如下。class test(forms.Form):.addr二forms.CharField(label=联系地址)label_suffix=print(test()Milt*4.initial initial参数用于设置字段的初始值,示例代码如下。class test(forms.Form):.name=forms.CharField(initial=,someone1)print(test(auto_id=False)Name:也可在创建表单对象时提供初始值,示例代码如下。d=test(,name,:,Lining,
13、/autoJd=False)print(d)Name:5.help_text help_text参数用于设置字段的帮助信息,帮助信息被渲染为 元素,示例代码如下。class test(forms.Form):,name=forms.CharField(help_text=姓名包含字母、数字等字符)print(test(auto_id=False)Name:tdxinput type=text name=name requiredxbrxspan classhelptext11姓名包含字母、数字等字符 6.error_messages errojmessages用于设置自定义错误信息,它将覆盖默
14、认的错误信息。error_messages的参数值为字典对象,其中的每个键值对对应一条校 验错误信息,示例代码如下。name=forms.CharField(error_messages=frequiredT必须提供name字段数 据T)name.clean()#验证字段取空值,触发异常 Traceback(most recent call last):django.core.exceptions.ValidationError:必须提供name字段数据口7.disableddisabled参数被设置为True时,不允许表单字段渲染成的 HTML元素与用户交互,示例代码如下。class tes
15、t(forms.Form):.addr=forms.CharField(label=联系地址:disabled=True)print(test()trvlabel foricLaddr11联系地址:v/labelv/thvtdvinput type=,text name=,addr required disabled id=,id_addr7.2.3使用水部件表单字段的widget参数用于指定渲染字段时使用的小部 件(也称组件),示例代码如下。class test(forms.Form):name=forms.CharField(widget=forms.Textarea)print(test
16、()Name:表7-2常用水部件小部件输入类型渲染结果Textinput文本Numberinput数字EmailinputE-mail地址URLInputURLPasswordinput用于输入密码Hiddenlnput隐藏的表单元素Dateinput日期字符串DateTimelnput日期时间字符串Timeinput时间字符串Textarea长文本.Checkboxinput复选框Select选项列表.NullBooleanSelect类似Select选项为Unknown、Yes和No的selectSelectMultiple类似Select,可多选.RadioSelect单选按钮组包含在l
17、i元素中的单选按钮组CheckboxSelectMultiple复选框 .Fileinput文件上传SelectDateWidget日期选项列表封费了3个Select来选择年、月、日。可用years和months参数指定 年份和月份选项7.2.4字段校验通常,Django根据字段类型执行默认的校验操作。例如,默认所有表单字段的required属性为True,字 段不接受空值。,表7-3列出了表单字段除了 required之外的其他校验操 作。表7-3常用表单字段类与校骑操作字段类校验操作错误信息关键字BooleanField验证给定值是否为TruerequiredCharField根据maxe
18、ngth和minength选项设置校验最大、最小长度required max_length min_lengthChoiceField验证给定值是否包含在选项列表中required invalid_choiceDateField验证数据是否为datetime.date、datetime.datetime或日期格式的字符串required invalidTimeField验证数据是否为datetime.time或时间格式的字符串required invalidDecimalField验证数据是否为小数。根据max_value和min_value设置校验最大值、最小值required invali
19、d、max_value min_value max_digits max_decimal_places、max_whole_digitsFloatField验证数据是否为浮点数。根据max_value和min_value设置校验最大值、最小值required invalid、max_value、min_valueIntegerField验证数据是否为整数。根据max_value和min_value设置校验最大值、最小值required invalid、max_value min_valueEmailField验证数据是否为有效的电子邮件地址required invalidFileField根据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PythonWeb开发基础教程 第7章 表单 PythonWeb 开发 基础教程
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。