https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统https://edu.csdn.net/course/detail/35475
目录* Django Form组件
+ 简介
+ form组件和传统form表单对比
+ 校验字段
- 校验字段实操
+ forms渲染标签
- 自己手动写HTML页面
- forms渲染标签(一)
- forms渲染标签(二)【常用】
- forms渲染标签(三)
+ 渲染错误信息
- * 示例
+ form渲染样式之参数配置
+ forms组件全局钩子和局部勾子
- 局部钩子
- 全局钩子
+ 错误信息显示
Django Form 组件有两大功能,用于对页面进行初始化,生成 HTML 标签,此外还可以对用户提交对数据进行校验(显示错误信息)
数据重置校验规则 form组件和传统form表单对比
当我们用传统的form表单提交时会刷新页面,如果这个我们表单中的某项填错了,刷新后我们正确的选项也没有了传统的form表单需要我们自己亲自校验每一项,其工作量太大form组件前端自动生成表单元素form组件可自动验证表单内容信息form组件可保留用户上次输入的信息
导入:form django import froms
校验字段ps:这里数据量较小使用sqlite3
# settings.py需要修改的配置 # LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-Hans' # 修改成中文 # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai' # 时间使用上海的 USE_I18N = True USE_L10N = True USE_TZ = False # 改为当前时区,默认为True校验字段实操
我们在不使用forms的情况下也可以校验用户注册的字段长度是否符合标准,比如通过len()等方法,但是过于麻烦,下面通过forms来校验用户字段长度;(注册举例)
''' 1.注册页面,forms校验,需要定义一个类,来继承forms.Form 2.自定义类内规定的字段就是校验规则 3.实例化类,得到form对象,使用is_valid校验,校验成功可以通过对象.cleanded.data获取到干净的数据,校验失败通过对象.erros返回错误信息 ''' 需要注意的是,实例化对象要传入校验数据! eg:reg_obj = Reg(data=request.POST)
'''Myforms.py'''
from django import forms
class Register(forms.Form):
username = forms.CharField(max_length=8, min_length=3, label='用户名',error_messages={'min_length':'太短了',"required": "该字段不能为空!"})
password = forms.CharField(max_length=11, min_length=3, label='密码')
re_password = forms.CharField(max_length=11, min_length=3, label='确认密码')
email = forms.EmailField(label='邮箱')
label:输入框前面的文本信息。error_message:自定义显示的错误信息,属性值是字典, 其中 required 为设置不能为空时显示的错误信息的 key
'''views.py'''
from django.shortcuts import render,HttpResponse,redirect
from app01.My_forms import Register
def register(request):
if request.method == 'GET':
return render(request,'register.html')
else:
# 实例化,传入校验数据
reg_form_obj = Register(data=request.POST)
# 判断校验是否可以通过
if reg_form_obj.is_valid():
# 校验通过存入数据库
print('校验通过')
print(reg_form_obj.cleaned_data)
reg_form_obj.cleaned_data.pop('re_password')
data = reg_form_obj.cleaned_data
models.Register.objects.create(**data)
# 将校验通过的数据打散传入
else:
# 校验不通过,返回错误信息
print('校验不通过')
print(reg_form_obj.errors)
return HttpResponse('ok')
'''不理解打散可以看下面这几个示例'''
# 字符串打散
s = 'Hammer'
print(s) # Hammer
print(*s) # H a m m e r
# 元组打散
tup = (1,2,3)
print(tup) # (1, 2, 3)
print(*tup) # 1 2 3
# 列表打散
lst = [1,2,3]
print(lst) # [1, 2, 3]
print(*lst) # 1 2 3
# 字典打散
def func(name,age):
print(name,age)
dic = {'name':'Hammer','age':18}
func(**dic) # Hammer 18
'''urls.py'''
path('register/', views.register)
'''models.py'''
from django.db import models
class Register(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
email = models.EmailField
forms渲染标签(一)
通过在视图函数中生成一个空form对象,html页面可以直接使用该对象进行渲染
def register(request):
if request.method == 'GET':
empty_form = Register()
return render(request,'register.html',{'form':empty_form})
else:
# 实例化,传入校验数据
reg_form_obj = Register(data=request.POST)
# 判断校验是否可以通过
if reg_form_obj.is_valid():
# 校验通过存入数据库
print('校验通过')
print(reg_form_obj.cleaned_data)
else:
# 校验不通过,返回错误信息
print('校验不通过')
print(reg_form_obj.errors)
return HttpResponse('ok')
{#forms渲染标签1#}



