from组件

1. form组件作用

django—form组件
作用1:页面标签渲染 form = register_form()
作用2:数据校验(form需要字典类型的数据,request.POST就是类似字典类型的数据) form = register_form(data=request.POST)
作用3:错误信息的渲染 form组件,会把错误的字段信息添加到errors中,正确的添加到cleaned_data中

2. 快速使用form  form组件+form表单

 2.1 url.py

 url(r'^register.html/', account.register, name='register'),

2.2 form组件

# form组件+form表单
from django import forms
from django.core.validators import RegexValidator
from django.core.exceptions import ValidationErrorclass register_form(forms.Form):username = forms.CharField(min_length=6,  # 设置最小长度max_length=12,  # 设置最大长度label="用户名",  # 设置标签名# 错误信息提示设置error_messages={"min_length": "用户名不能少于6位","max_length": '用户名不能超过12位',"required": "用户名不能为空"},# 插件设置widget=forms.widgets.TextInput(attrs={"class": "form-control", 'xxx': 'c1'}  # 给生成的标签添加属性 form-control-- bootstrap样式))# 密码password = forms.CharField(label="密码",min_length=6,error_messages={"required": "密码不能为空",'min_length': '密码不能少于6位'},widget=forms.widgets.PasswordInput(attrs={'class': 'form-control'},  # 给生成的标签添加属性 form-control-- bootstrap样式render_value=True  # 返回报错信息的时候要不要展示密码))# 二次密码校验re_password = forms.CharField(label="确认密码",min_length=6,error_messages={"required": "确认密码不能为空",'min_length': '确认密码不能少于六位'},widget=forms.widgets.PasswordInput(attrs={'class': 'form-control'},  # 给生成的标签添加属性 form-control-- bootstrap样式render_value=True  # 返回报错信息的时候要不要展示密码))# 电话号码phone = forms.CharField(label="手机号",error_messages={"required": "手机号不能为空"},# 调用Form组件中的验证器来校验手机号validators=[RegexValidator(r'1[0-3][0-9]{9}', '手机号格式不正确')],widget=forms.widgets.TextInput(attrs={'class': 'form-control'},  # 给生成的标签添加属性 form-control-- bootstrap样式))# 邮箱email = forms.CharField(label="邮箱",error_messages={"required": "邮箱不能为空",},# 调用Form组件中的验证器来校验邮箱validators=[RegexValidator(r'^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$', "邮箱格式不正确")],widget=forms.widgets.TextInput(attrs={'class': 'form-control'},  # 给生成的标签添加属性))# 局部钩子  通过自定义一个clean_字段名的方法实现对Form表单特定字段的校验# 一个字段校验全部完成后,在继续校验另一个def clean_username(self):# 从cleaned_data中取出想要的数据username = self.cleaned_data.get("username")if "2b" in username:# 错误就抛异常raise ValidationError("不符合社会主义核心价值观!")return username# 通过Form表单的全局钩子函数来验证两次输入的密码是否正确# 该clean方法, 在每个字段都校验通过之后才调用执行#  raise ValidationError  self.add_error()  前者不会把错误的键值对,放回cleaned_data字典中,后者会放回cleaned_data字典中def clean(self):password = self.cleaned_data.get('password')re_password = self.cleaned_data.get('re_password')if password == re_password:# 判断正确就返回校验过后的数据return self.cleaned_dataself.add_error('re_password', '两次密码输入不一致')

 2.3 view.py


from django.shortcuts import HttpResponse, render, redirectfrom app01.form.account import register_formdef register(request):'''验证码登录'''if request.method == 'GET':form = register_form()return render(request, 'register.html', locals())form = register_form(data=request.POST)if form.is_valid():# 数据保存 instance当前创建s的对象instance = models.user.object.create(**form.cleaned_data)return redirect('home')return render(request, 'register.html', locals())

2.4 html



{% load static %}
拍卖列表


拍卖专场

添加 {% for auction in auction_list %}{% endfor %}
序号封面专场预展时间拍卖时间状态操作
{{ forloop.counter }}{{ auction.title }}{{ auction.preview_start_time }}{{ auction.auction_start_time }}{{ auction.get_status_display }}|


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部