当前位置: 首页 > news >正文

steam课程做网站天津百度快速排名优化

steam课程做网站,天津百度快速排名优化,用ps做网站首页顶部图片,低价网站建设怎么样Django——forms组件 forms组件:通过后端在Django中定义forms类,可以在 html 中动态的生成一个表单;检验用户提交的数据。 在应用中创建一个名为 :forms 的py文件 # 导入 forms 组件 from django import forms# 自定义 forms …

Django——forms组件

forms组件:通过后端在Django中定义forms类,可以在 html 中动态的生成一个表单;检验用户提交的数据。

在应用中创建一个名为 :forms 的py文件

# 导入 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 showforms(request):# 渲染表单:生成一个表单类对象 , 提交到 html 中if request.method == 'GET':# 生成一个空白的表单类对象forms = MyForm()else:# 但请求为 post 请求的时候 , 说明用户提交数据# 将数据传递该 form 组件(表单类接收的数据要是字典类型的数据)forms = MyForm(request.POST)res = '数据已提交'return render(request , 'index.html' , locals())
<body>
<form method="post">{% csrf_token %}{{ forms }}<input type="submit" value="注册">
</form>
<span>{{ res }}</span>
</body>

在模板中渲染自定义表单类

<form method="post">{% csrf_token %}<p>使用表格的样式渲染</p>{{ forms.as_table }}<p>使用段落的样式渲染</p>{{ forms.as_p }}<p>使用列表的样式渲染</p>{{ forms.as_ul }}<input type="submit" value="注册">
</form>

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='性别',# 设置选项框类型: 单选 RadioSelectwidget=forms.RadioSelect(),# 设置默认选项initial = 3)work = forms.ChoiceField(choices=((1,'学生'),(2,'搬砖'),(3,'退休')) , label='职业',# 设置选项框类型: 单选 Selectwidget=forms.Select(),# 设置默认选项initial = 3)hobby = forms.ChoiceField(choices=((1,'爬山'),(2,'唱歌'),(3,'跳舞'),(4,'rap'),(5,'跆拳道'),(6,'篮球')) , label='爱好',# 设置选项框类型: 多选 CheckboxSelectMultiplewidget=forms.CheckboxSelectMultiple(),# 设置默认选项initial = [2,6])subject = forms.MultipleChoiceField(choices=((1,'物理'),(2,'化学'),(3,'生物'),(4,'地理'),(5,'历史'),(6,'政治')) , label='科目',# 设置选项框类型: 多选 CheckboxSelectMultiplewidget=forms.CheckboxSelectMultiple(),# 设置默认选项initial = [1])xy = forms.CharField(label='阿宸要你写代码的协议',widget=forms.CheckboxInput())

forms 组件验证数据

class RegisterView(View):def get(self , request):return render(request , 'register.html')def post(self , request):# 数据给 forms 组件进行数据校验register_form = RegisterForm(request.POST)# 判断数据是否合法# is_valid 判断表单类中获取的数据校验是否合法,合法返回 True# register_form.errors 存放的就是数据的错误信息if register_form.is_valid():return HttpResponse('注册成功')else:return render(request , 'register.html' , locals())
# 数据验证
class RegisterForm(forms.Form):username = forms.CharField(max_length=10 , 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': '不允许为空'})# 验证数据使用钩子函数 , 钩子:自定义的校验规则# 局部钩子:给一个字段数据校验# 定义局部钩子的函数名称:clean_属性名def clean_username(self):# 勾取数据:获取到对应的属性数据data = self.cleaned_data.get('username')# 进行数据检验if not re.match(r'^[a-zA-Z0-9]{3,10}$' , data):# 添加异常信息# self.add_error(属性 , 错误信息)self.add_error('username' , '用户名不合法')# 把勾取到的数据返回回去return data# 全局钩子:过多个字段校验def clean(self):pwd1 = self.cleaned_data.get('password')pwd2 = self.cleaned_data.get('password2')if pwd1 != pwd2:self.add_error('password2', '两次密码不一致')return self.cleaned_data
<body>
{#  novalidate 关闭浏览器自动渲染 form 组件的错误信息 #}
<form method="post" novalidate>{% csrf_token %}<p>用户名:<input type="text" name="username"></p><span style="color:red;">{{ register_form.username.errors.0 }}</span><p>密码:<input type="password" name="password"></p><span style="color:red;">{{ register_form.password.errors.0 }}</span><p>确认密码:<input type="password" name="password2"></p><span style="color:red;">{{ register_form.password2.errors.0 }}</span><input type="submit" value="注册">
</form>
</body>
http://www.tj-hxxt.cn/news/9307.html

相关文章:

  • 内容营销和传统营销的区别优化大师免费下载安装
  • 太原网站关键词推广日本免费服务器ip地址
  • 网站代码优化免费模式营销案例
  • 做网站需要具备什么简述网络营销的方法
  • 电商网站的意义重庆seo网站推广费用
  • 响应式网站模板免费北京seo代理计费
  • 美国网站做付款方式佛山营销型网站建设公司
  • 权威网站优化价格上海专业seo
  • 怎么免费做自己的网站推广网络广告
  • 如何把自己做的网站放到内网天天广告联盟
  • 网站开发功能报价百度文库淘宝联盟怎么推广
  • 宁波室内设计公司排名兰州seo
  • 百度分享wordpress武汉网站seo
  • 平台网站模板素材手机版怎么用百度快照
  • 用java做网站的流程google网站入口
  • 免费seo网站推荐一下江苏seo
  • 新手学做网站pdf下载谷歌安装器
  • 手机移动端网站怎么做的免费seo网站诊断
  • 做有搜索功能的网站手机优化大师官方免费下载
  • 乐山网站制作公司厦门百度快照优化排名
  • 自己做的网站加载速度慢武汉百度百科
  • 直播网站怎么做软文推广案例大全
  • 甘肃手机版建站系统价格国际新闻最新消息中国
  • ui设计包括哪些重庆网站seo公司
  • 网站设计公司市场容量百度seo收费
  • 厦门seo关键词排名海口关键词优化报价
  • 个人可以做导购网站吗长沙建设网站制作
  • 建网站的网站有哪些成都网络运营推广
  • 亚马逊网站建设做什么万能软文模板
  • 电商直播百度seo最新算法