django 程序化配置form

一、Forms介绍:

在前端和 Django 中,表单(Forms)是用来收集和提交用户数据的重要工具。虽然前端和 Django 中的表单都有相似的目的,但它们在实现方式和用法上略有不同。

1、在前端中:

首先得清楚,表单就是用来提交数据的。

在from中,action="提交地址",method="" 表示提交形式。

最为重要的就是:表单控件:

1.输入类:

input text表示文本 ,number数字输入类 ,password表示输入密码(输入密码时候不能在屏幕中显示出) ,name="key"提取数据(value) 没有name就无法提交输入的参数 也可以直接设置value值 就不用输入东西。

placeholder表示未输入时候的 提示内容。

disabled 禁止选中(不能输入了)。

2.选择类:

type="radio" radio表示单选框要单选的话name必须一样 value表示的是选中这个选项的值.type="checkbox" 表示多选 checked表示默认选中.

3.下拉选择:

select里面 要选择的数据用option。

4.文本域:

就相当于一个文本输入框 textarea。

2.在Django中:

forms组件:通过后端在 Django 中定义类对象方式,在 HTML 页面中动态实现一个表单;在后端中检验用户提交的数据。

二、Forms在Django中的应用:

在 Django 中,表单通常定义在 forms.py 文件中,通过继承 django.forms.Form 或django.forms.ModelForm 类来创建。表单类中的每个字段都是一个表单字段对象,它们定义了表单中的输入字段类型以及验证规则等。

1、动态 forms 表单:

创建简单表单:

导入 forms 组件

from django import forms

自定义 forms 表单类 , 表单类必须继承 forms.Form

Django 提供 forms 组件中么有按钮标签

class MyForm(forms.Form):

表单中的文本框标签,定义为属性

定义好之后 , 渲染到 html 页面中是一个 label 标签和 input 标签

username = forms.CharField(label='用户名')

password = forms.CharField(label='密码')

def show_forms(request):

渲染表单,生成一个表单类对象 , 将这个对象传递到 html 页面中

my_forms = MyForm()

return render(request , 'forms_django.html' , locals())

'

运行运行
{% csrf_token %} {{ my_forms }} 具体操作细节上述代码中都有注释。

上述三块代码分别是在forms.py文件,view.py文件,html文件中的。

注意:

1.在Django中没有forms组件的按钮标签。

2.上述是以post请求为例子,注意设置命令'{% csrf_token %}'。

2、在模板中渲染自定义的表单类:

1.使用表格渲染:
{% csrf_token %}

使用表格的样式渲染
{{ my_forms.as_table }} 2.使用段落渲染: {% csrf_token %}

使用段落的样式渲染
{{ my_forms.as_p }} 3.使用列表渲染: {% csrf_token %}

使用列表的样式渲染
{{ my_forms.as_ul }} 4.自定义渲染: {% csrf_token %}

自定义渲染
{{ my_forms.username.label }}:{{ my_forms.username }}
{{ my_forms.password.label }}:{{ my_forms.password }}
3、forms 组件提供的文本框设置: 注意:下述代码除了普通的文本框之外邮箱需要特别注意,因为邮箱它会自动识别格式。日期它会将文本框变为选择时间的。

导入 forms 组件

from django import forms

自定义 forms 表单类 , 表单类必须继承 forms.Form

Django 提供 forms 组件中么有按钮标签

class MyForm(forms.Form):

表单中的文本框标签,定义为属性

定义好之后 , 渲染到 html 页面中是一个 label 标签和 input 标签

username = forms.CharField(label='用户名')

password = forms.CharField(label='密码',

设置 password 文本框,这样密码就不显示出来了

widget=forms.PasswordInput())

邮箱

email = forms.EmailField(label="邮箱")

日期

day = forms.DateField(label='日期',

设置日期日历选项

widget=forms.TextInput(attrs={'type':'date'}))

选项框

choices 设置选项内容,内容要以元组类型

gender = forms.ChoiceField(choices=((1 , '男'),(2 , '女'),(3 , '未知')) , label='性别',

设置选项框类型: 单选 RadioSelect

widget=forms.RadioSelect(),

设置默认选项

initial=3)

work = forms.ChoiceField(choices=((1 , '搬砖'),(2 , '退休'),(3 , '学生')) , label='职业',

设置选项框类型: 单选 Select

widget=forms.Select(),

设置默认选项

initial=2)

subject = forms.MultipleChoiceField(choices=((1 , 'python'),(2 , 'java'),(3 , 'C'),

(4 , 'C#'),(5 , 'linux'),(6 , '大数据')) ,

label='科目',

设置选项框类型: 多选 CheckboxSelectMultiple

widget=forms.CheckboxSelectMultiple(),

设置默认选项

initial=[1, 2 , 6])

hobby = forms.ChoiceField(choices=((1 , '爬山'),(2 , '旅游'),(3 , '徒步'),

(4 , '唱歌'),(5 , '篮球'),(6 , '跆拳道')) ,

label='爱好',

设置选项框类型: 多选 CheckboxSelectMultiple

widget=forms.CheckboxSelectMultiple(),

设置默认选项

initial=[1, 2 , 6])

xy = forms.CharField(label='为了你好的协议' , widget=forms.CheckboxInput())

4、forms 验证数据:

使用 forms 组件进行校验用户表单提交的数据。

数据验证

class RegisterForm(forms.Form):

username = forms.CharField(max_length=15 , min_length=3,

设置错误信息字典

error_messages={

"max_length" : "用户名长度超出",

"min_length" : "用户名长度过短",

"required" : "不允许为空"

})

password = forms.CharField(max_length=15 , min_length=6,

设置错误信息字典

error_messages={

"max_length" : "密码长度超出",

"min_length" : "密码长度过短",

"required" : "不允许为空"

})

password2 = forms.CharField(max_length=15 , min_length=6,

设置错误信息字典

error_messages={

"max_length" : "密码长度超出",

"min_length" : "密码长度过短",

"required" : "不允许为空"

})

上述的代码中: error_messages它是为了涉及错误字典,就是当出现错误,会显示字典值里面的内容。

此时在视图文件中:

注意:访问html一般都为get请求,我们自己设置的提交表单数据为post请求,如下述代码就能更好的区分。

class RegisterView(View):

def get(self , request):
    return render(request , 'register.html')

def post(self , request):
    # 生成一个表单类对象
    # 验证数据,将数据传递给表单类;表单类接收的数据是字典类型的数据
    register_form = RegisterForm(request.POST)

    # 判断数据是否合法
    # is_valid 判断表单类中的数据是否检验合法 , 合法返回 True
    if register_form.is_valid():
        res = "注册成功"
    else:
        res = "注册失败"
    return render(request , 'register.html' , locals())

注意:其中最为主要的一个点就是要以POST请求将我们输入的数据传输到我们自己设计的用来检验的类视图当中,其中'is_valid' 判断表单类中的数据是否检验合法 , 合法返回 True。

相关推荐
一点媛艺2 小时前
Kotlin函数由易到难
开发语言·python·kotlin
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
_.Switch3 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
测开小菜鸟4 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
萧鼎5 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸6 小时前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农6 小时前
Python 继承、多态、封装、抽象
开发语言·python
Wx-bishekaifayuan6 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
Python大数据分析@6 小时前
python操作CSV和excel,如何来做?
开发语言·python·excel
黑叶白树6 小时前
简单的签到程序 python笔记
笔记·python