django.po,django
学习笔记,仅供参考。
Django目录中的forms模块使用forms模块的步骤来定义form类的语法,并分析例如模板中的form对象内置小部件。
Django中的表单模块
Django中提供了表单模块,可以自动生成表单的内部表单控件。同时,可以在服务器端以对象的形式接收和操作客户端表单元素,并在服务器端验证表单的数据。
窗体模块的功能是通过窗体模块实现的,它允许窗体与类结合,并通过类生成窗体。
使用表单模块的步骤
在应用程序中创建forms.py模块
django提供的进口表格。
定义表单类(一个类会生成一个表单)类FormName(forms。表单):
及格
向form类添加类属性。class属性对应于表单中的控件。
使用表单自动(或手动)生成表单内容。表单类型对象。
阅读表单并验证数据
定义form类的语法。
属性=表单。字段类型(参数)字段类类名(来自。表单):
表格。CharField() # textbox输入类型=text
表格。ChoiceField() #下拉选项框选择
表格。DateField() #日期框输入类型=日期
参数标签
#控件前的文本
小部件
#指定小部件
最初的
#控件的初始值(主要用于文本框类型)
需要
#是必需的,值为(True/False),默认值为True
解析模板中的表单对象
解析表单对象在视图中创建表单对象,并将其发送到模板文件进行解析:
定义视图名称(请求):
形式=形式。表单名称()
返回render(request, xx.html ,locals())
在模板文件中解析:
!-手动解析-
表单%}中字段的{%
{{field.label}}: {{field}}
!- field.label表示标签参数的值,field表示表单控件-
{% endfor %}
!-自动解析-
{{form.as_p}}
!-在显示之前,用P标记将表单中的每个属性(控件/文本)包装起来-
{{form.as_ul}}
!-在显示之前,用li标记将表单中的每个属性(控件/文本)括起来-
!-ol或ul标志必须手动提供-
{{form.as_table}}
!-在显示之前,用tr标记将表单中的每个属性(控件/文本)包装起来-
!-必须手动提供表格标签-
内置部件
什么是widget?Widget是指在网页上生成的控件和一些html属性。
常用小部件类型的小部件名称。
和相应类型类值。
文本输入
type=text
密码输入框
type=password
数字输入
type="number "
电子邮件输入
type="电子邮件"
URLInput
type="url "
隐藏输入
type="hidden "
复选框输入
type="checkbox "
复选框选择多个
type="checkbox "
无线电选择
type="收音机"
文本区域
文本区域标记(大文本框)
挑选
选择标签
选择多个
选择多个标签
小部件1的使用语法:
Class=forms。夏菲尔德(
label=xxx ,
Widget=forms.widget类型
)语法2(在指定控件类型的基础上,还可以指定控件的一些html属性值):
Class=forms。夏菲尔德(
label=xxx ,
Widget=forms.widget类型(
属性={
Html属性名:值,
Html属性名:值,
}
)
)
例如
首先,我们在userinfo应用程序下创建一个表单模块forms.py:
在forms.py模块中,我们键入以下代码:
# -*-编码:utf-8 -*-
从django进口表格
类RegForm(forms。表单):
username=forms . charfield(label=输入昵称)
password=forms . charfield(label=输入密码)
password repeat=forms . charfield(label=再次输入密码)
# input type=text 在userinfo应用程序的templates文件夹下创建一个新模板test_form.html:
在userinfo应用程序的urls.py文件中,我们添加了一个路由:
从django.urls导入re_path
从。导入视图
urlpatterns=[
re_path(r^test_form/,views.test_form),
]在userinfo应用程序的views.py模块中,我们添加了一个视图函数:
定义测试表单(请求):
if request.method==GET :
myform=forms。RegForm()
#创建一个对象
return render(request, userinfo/test_form.html ,
locals())
否则:
打印(其他请求)在测试_表单。超文本标记语言模板中,我们敲入如下代码:
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题形式表单/标题
/头
身体
表单操作=/userinfo/test_form/方法=POST
{% csrf_token %}
{{myform.as_p}}
{# 自动生成形式表单的内部的表单控件#}
/表单
/body
/html
我们向http://127 .0 .0 .1:8000/userinfo/test _ form/发起请求:
由于提交表单数据的按钮不能用形式类自动生成,所以我们在测试_表单。超文本标记语言模块中自己加一个提交按钮:
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题形式表单/标题
/头
身体
表单操作=/userinfo/test_form/方法=POST
{% csrf_token %}
{{myform.as_p}}
{# 自动生成形式表单的内部的表单控件#}
输入类型=提交值=注册
/表单
/body
/html在forms.py模块中,我又添加了一个手机号输入框,并设置此框内容可为空:
从框架进口表格
类RegForm(表单.表单):
用户名=表单CharField(label=输入昵称)
密码=表单CharField(label=输入密码)
passwordRepeat=forms .CharField(label=再次输入密码)
电话=表单CharField(label=手机号,必需=假)
#输入类型=文本
我们再次向http://127 .0 .0 .1:8000/userinfo/test _ form/发起请求:
我们看一下该页面的源代码:
!声明文档类型
html lang=en
头
meta charset=UTF-8
标题形式表单/标题
/头
身体
表单操作=/userinfo/test_form/方法= POST /表单
输入类型= hidden name= csrfmiddlewaretoken value= bgx M5 hvnfrddqh 30 zlc 1 slbqkrmlstuhljz 7 ehabbbbgzydsv 9 kvhejqaim 4 qeaneg
= id _用户名的p标签输入昵称:/label input type= text name= username required id= id _ username /p
=id_password 的p标签输入密码:/label input type= text name= password required id= id _ password /p
=id_passwordRepeat 的p标签再次输入密码:/label input type= text name= password repeat required id= id _ password repeat /p
=id_tele 的p标签手机号:/label input type= text name= tele id= id _ tele /p
输入类型=提交值=注册
/body
/html
现在,我们给我们的表单加一些小部件,比如将文本框改为密码输入框:
从框架进口表格
类RegForm(表单.表单):
用户名=表单CharField(label=输入昵称)
密码=表单CharField(label=输入密码,
小部件=表单。密码输入)
passwordRepeat=forms .CharField(label=再次输入密码,
小部件=表单。密码输入)
电话=表单CharField(label=手机号,必需=假)
电子邮件=表单CharField(label=邮箱,必需=假,
小部件=表单。电子邮件输入)我们再次向http://127 .0 .0 .1:8000/userinfo/test _ form/发起请求:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。