java中的接口是类吗
313
2022-08-31
Django(part45)--forms模块(django setting)
学习笔记,仅供参考
文章目录
Django中的forms模块
使用forms模块的步骤定义表单类的语法在模板中解析form对象内置小部件widget举个例子
Django中的forms模块
在Django中提供了forms模块,用forms模块可以自动生成form表单的内部的表单控件,同时,在服务器端可以用对象的形式接收并操作客户端表单元素,并能对表单的数据进行服务器端验证。
forms模块的作用
通过forms模块,允许将表单与class相结合,允许通过class生成表单
使用forms模块的步骤
在应用中创建forms.py模块
导入django提供的forms
import django import forms
定义表单类(一个class会生成一个表单)
class FormName(forms.Form): pass
在表单类中增加类属性
一个类属性对应表单中的一个控件。
利用forms.Form类型的对象自动(或手动)生成表单内容
读取form表单并进行验证数据
定义表单类的语法
类属性 = forms.Field类型(参数)
Field类型
class ClassName(froms.Form): forms.CharField() #文本框 forms.ChoiceField() #下拉选项框
参数
label#控件前的文本widget#指定小部件initial#控件的初始值(主要针对文本框类型)required#是否为必填项,值为(True/False),默认为True
在模板中解析form对象
解析form对象
在视图中创建form对象,并将其发送到模板文件中进行解析:
def viewsName(request): form = forms.FormName() return render(request,'xx.html',locals())
在模板文件中解析:
{% for field in form %}{{field.label}}: {{field}}{% endfor %}{{form.as_p}}{{form.as_ul}}{{form.as_table}}
内置小部件widget
什么是小部件
小部件是指,生成在网页上的控件以及一些html属性。
常用的小部件类型
widget名称 | 对应和type类值 |
TextInput | type=‘text’ |
PasswordInput | type=‘password’ |
NumberInput | type=“number” |
EmailInput | type=“email” |
URLInput | type=“url” |
HiddenInput | type=“hidden” |
CheckboxInput | type=“checkbox” |
CheckboxSelectMultiple | type=“checkbox” |
RadioSelect | type=“radio” |
Textarea | textarea标记(大文本框) |
Select | select标记 |
SelectMultiple | select multiple 标记 |
小部件的使用
语法1:
类属性 = forms.CharField( label='xxx', widget=forms.小部件类型)
语法2(在指定控件类型的基础之上还能指定控件的一些html属性值):
类属性 = forms.CharField( label='xxx', widget=forms.小部件类型( attrs={ 'html属性名':'值', 'html属性名':'值', } ))
举个例子
首先,我们在userinfo应用下创建一个表单模块forms.py:
在forms.py模块中,我们敲入如下代码:
# -*- coding: utf-8 -*-from django import formsclass RegForm(forms.Form): username = forms.CharField(label = "输入昵称") password = forms.CharField(label = "输入密码") passwordRepeat = forms.CharField(label = "再次输入密码") #
在userinfo应用的模板文件夹templates下创建一个新的模板test_form.html:
在userinfo应用的urls.py文件中,我们添加一个路由:
from django.urls import re_pathfrom . import viewsurlpatterns = [ re_path(r'^test_form/', views.test_form), ]
在userinfo应用的views.py模块中,我们添加一个视图函数:
def test_form(request): if request.method == "GET": myform = forms.RegForm() #创建对象 return render(request, 'userinfo/test_form.html', locals()) else: print("其他请求")
在test_form.html模板中,我们敲入如下代码:
我们向html>
在forms.py模块中,我又添加了一个手机号输入框,并设置此框内容可为空:
from django import formsclass RegForm(forms.Form): username = forms.CharField(label = "输入昵称") password = forms.CharField(label = "输入密码") passwordRepeat = forms.CharField(label = "再次输入密码") tele = forms.CharField(label = "手机号", required = False) #
我们再次向html>
现在,我们给我们的表单加一些小部件,比如将文本框改为密码输入框:
from django import formsclass RegForm(forms.Form): username = forms.CharField(label = "输入昵称") password = forms.CharField(label = "输入密码", widget=forms.PasswordInput) passwordRepeat = forms.CharField(label = "再次输入密码", widget=forms.PasswordInput) tele = forms.CharField(label = "手机号", required = False) email = forms.CharField(label = "邮箱", required = False, widget=forms.EmailInput)
我们再次向http://127.0.0.1:8000/userinfo/test_form/发起请求:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~