博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django组件 - forms组件
阅读量:2240 次
发布时间:2019-05-09

本文共 5692 字,大约阅读时间需要 18 分钟。

一、forms组件

       利用下面一个注册新用户的示例,来学习forms表单组件的功能。

1、校验字段功能

       模型:models.py

    class UserInfo(models.Model):            name = models.CharField(max_length=32)            pwd = models.CharField(max_length=32)            email = models. CharField(max_length=32)            tel = models.CharField(max_length=32)

       模板:register.html

                                 
Title
{
% csrf_token %}

       视图函数:view.py

     from django.shortcuts import render,HttpResponse     from django import forms     from django.forms import widgets     from app01.models import UserInfo        wid_01=widgets.TextInput(attrs={
"class":"form-control"}) wid_02=widgets.PasswordInput(attrs={
"class":"form-control"}) class UserForm(forms.Form): # 定义一个forms组件类 name=forms.CharField(max_length=32, widget=wid_01) pwd=forms.CharField(max_length=32,widget=wid_02) r_pwd=forms.CharField(max_length=32,widget=wid_02) email=forms.EmailField(widget=wid_01) tel=forms.CharField(max_length=32,widget=wid_01) def register(request): if request.method=="POST": form=UserForm(request.POST) if form.is_valid(): print(form.cleaned_data) # 所有干净的字段以及对应的值 UserInfo.objects.create(**form.cleaned_data) else: print(form.cleaned_data) # {"字段1":"值1","字段2":"值2"} print(form.errors) # ErrorDict : {"校验错误的字段":["错误信息",]} print(form.errors.get("name")) # ErrorList ["错误信息",] return render(request,"register.html",locals()) form=UserForm() return render(request,"register.html",locals())
2、渲染标签功能

       方式一(不常用,不够灵活):

    
{
% csrf_token %} {
{ form.as_p }}
    

       方式二:

    
{
% csrf_token %}
{
{ form.name }}
{
{ form.pwd }}
{
{ form.r_pwd }}
{
{ form.email }}
{
{ form.tel }}
    

       方式三(for循环遍历,常用):

    
{
% csrf_token %} {
% for field in form %}
{
{ field }}
{
% endfor %}
    
3、显示错误与重置输入信息功能

       模板:register.html

    
{
% csrf_token %} {
% for field in form %}
{
{ field }}
{
{ field.errors.0 }}
{
% endfor %}
    
4、局部钩子与全局钩子

       视图:views.py

     from django.shortcuts import render,HttpResponse     from django import forms     from django.forms import widgets     from app01.models import UserInfo        wid_01=widgets.TextInput(attrs={
"class":"form-control"}) wid_02=widgets.PasswordInput(attrs={
"class":"form-control"}) class UserForm(forms.Form): # 定义一个forms组件类 name=forms.CharField(max_length=32, widget=wid_01) pwd=forms.CharField(max_length=32,widget=wid_02) r_pwd=forms.CharField(max_length=32,widget=wid_02) email=forms.EmailField(widget=wid_01) tel=forms.CharField(max_length=32,widget=wid_01) # 局部钩子 def clean_name(self): val=self.cleaned_data.get("name") if not val.isdigit(): return val else: raise ValidationError("用户名不能是纯数字!") # 全局钩子 def clean(self): pwd=self.cleaned_data.get("pwd") r_pwd=self.cleaned_data.get("r_pwd") if pwd and r_pwd: if pwd==r_pwd: return self.cleaned_data else: raise ValidationError('两次密码不一致!') else: return self.cleaned_data def register(request): if request.method=="POST": form=UserForm(request.POST) if form.is_valid(): print(form.cleaned_data) # 所有干净的字段以及对应的值 UserInfo.objects.create(**form.cleaned_data) else: print(form.cleaned_data) # {"字段1":"值1","字段2":"值2"} print(form.errors) # ErrorDict : {"校验错误的字段":["错误信息",]} print(form.errors.get("name")) # ErrorList ["错误信息",] clean_error=form.errors.get("__all__") return render(request,"register.html",locals()) form=UserForm() return render(request,"register.html",locals())

 

转载于:https://www.cnblogs.com/li-li/p/9898957.html

你可能感兴趣的文章
Oracle PL/SQL语言初级教程之过程和函数
查看>>
Oracle PL/SQL语言初级教程之表和视图
查看>>
Oracle PL/SQL语言初级教程之完整性约束
查看>>
PL/SQL学习笔记
查看>>
如何分析SQL语句
查看>>
结构化查询语言(SQL)原理
查看>>
SQL教程之嵌套SELECT语句
查看>>
日本語の記号の読み方
查看>>
计算机英语编程中一些单词
查看>>
JavaScript 经典例子
查看>>
判断数据的JS代码
查看>>
js按键事件说明
查看>>
AJAX 初次体验!推荐刚学看这个满好的!
查看>>
AJAX 设计制作 在公司弄的 非得要做出这个养的 真晕!
查看>>
Linux 查看文件大小
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>