from django import forms

from django.forms import fields

class UserInfo(forms.Form):

username = fields.CharField(required=True,error_messages={

'required':'username不能为空'

}) # 正则表达式

password = fields.CharField(required=True,error_messages={

'required':'password不能为空'

})

email = fields.EmailField(required=True,error_messages={

'required':'email不能为空',

'invalid':'email格式错误'

}) #不能为空

# 获取用户提交的数据 request.POST

# 数据和正则表达式进行验证

# 1.是否验证成功

# 2.成功:获取数据

# 3.失败:显示错误信息

def add_user(request):

if request.method == 'GET':

return render(request,'add_user.html')

else:

obj = UserInfo(request.POST)  # 定义一个form实例

# 获取是否验证成功 使用is_valid方法

if obj.is_valid():

print('验证通过',obj.cleaned_data)

models.UserInfo.objects.create(**obj.cleaned_data)

else:

print('错误信息',obj.errors)

总结:

Form验证:

a.Form类

b. obj = Form()

obj.username  <input .../>

c. obj = Form(request.POST)

obj.username  <input value=..../>

d. 验证

if obj.is_valid()

print('数据信息',obj.cleaned_data)

models.UserInfo.objects.create(**obj.cleaned_data)

else:

print('错误信息',obj.errors)

print('错误信息',obj.errors.usernaem[0])

return render(request,'add_user/',{'obj':obj})

===============>

Form 生成HTML标签

在index中添加  {{ obj.usernaem }}      自动生成html标签

from django.forms import widgets

widget=widgets.TextInput(attr={'class':'xxxx'})  #设置标签类型

Form 编辑

#============urls.py================

from app01 import views

urlpatterns = [

url(r'edit_user/(?P<uid>\d+)',views.edit_user),

]

#============views.py================

from django import forms

from django.forms import fields

from django.forms import widgets

class UserForm(forms.Form):

username = fields.CharField(

required=True,

error_messages = {'required':'username不能为空'},

widget = widgets.TextInput(attrs={'class':'form-control','placeholder':'用户名'}),

)

password = fields.CharField(

required = True,

error_messages = {'required':'password不能为空'},

widget = widgets.TextInput(attrs={'class':'form-control','placeholder':'密码'}),

)

email = fields.CharField(

required = True,

error_messages = {'required':'email不能为空'},

widget = widgets.TextInput(attrs={'class':'form-control','placeholder':'邮件'}),

)

from app01 import models

def edit_user(request,uid):

if request.method == 'GET':

user_obj = models.UserInfo.objects.filter(id=uid).first()

obj = UserForm(initial={'username':user_obj.username,'password':user_obj.password,'email':user_obj.email})

#或者

# user = models.UserInfo.objects.values('username','password','email').filter(id=uid).first()

# obj = UserForm(initial=user)

return render(request,'edit_user.html',{'obj':obj,'uid':uid})

elif request.method == 'POST':

obj = UserForm(request.POST)

if obj.is_valid():

models.UserInfo.objects.filter(id=uid).update(**obj.cleaned_data)

return redirect('/index1/')

else:

return render(request,'edit_user.html',{'obj':obj,'uid':uid})

Form中的select下拉框:

ut_id = fields.IntegerField(

required=True,

widget = widgets.Select(

attrs = {'class':'form-control'},

choices = [],

)

)

def __init__(self,*args,**kwargs)

super(UserForm,self).__init__(*args,**kwargs)

self.fields['ut_id'].widget.choices = models.UserType.values_list('id','usertype')

Form 小结:

1. 做提交数据的验证

2. 生成对应的HTML

3.

跨表操作时的数据库性能

select_related('Forkey')

Django中Form的基本使用的更多相关文章

  1. Django中Form验证

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一,Form验证 第一种操作:主要是这三个函数 ...

  2. django中form表单的提交:

    一,关于表单: 表单在百度百科的解释:   表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...

  3. Django 中 form 介绍

    目录 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...

  4. Django中Form组件的使用

    Form介绍 HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...

  5. django中form组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  6. 如何写django中form的测试用例

    可简可繁, 可插库,可字符, 要测试valid,也要测试invalid, 可用csrf,也可用context. 放一个全面的, 实践中,找一个最优的组合就好. class NewTopicTests( ...

  7. Django 中form的用法

    form的主要作用:1.在html中生成表单框架,2.验证数据(实话实说,很简洁,但不实用,灵活性差) from django.db import models # Create your model ...

  8. Django中Form的Textarea字段

    开始以为是这个样子: class BlogForm(forms.Form): title    = forms.CharField(required = True) content  = forms. ...

  9. django中form页面刷新后自动提交的解决方案

    如果一个页面包含了form,同时这个form中的提交按钮是type=submit的input的时候,你刷新该页面,就会有弹窗提示是否重新提交表单,这个特性不胜其烦,常见解决方法有两个: 第一种是前端的 ...

随机推荐

  1. highcharts 具体参数详解

    <script type="text/javascript" src="js/jquery.min.js"></script> < ...

  2. python 面向对象之继承与派生

    一:初识继承 1,什么是继承? 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类 ...

  3. Class-Based-View(CBV)

    我们都知道,Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写V ...

  4. Andrew Ng机器学习第一章——初识机器学习

    机器学习的定义 计算机程序从经验E中学习,解决某一任务T.进行某一性能度量P,通过P测定在T上的表现因E而提高. 简而言之:程序通过多次执行之后获得学习经验,利用这些经验可以使得程序的输出结果更为理想 ...

  5. Zepto.js库touch模块代码解析

    Zepto.js也许并不陌生,专门针对移动端开发,Zepto有一些基本的触摸事件可以用来做触摸屏交互(tap事件.swipe事件),Zepto是不支持IE浏览器的. 下面来解析一些Zepto.js触摸 ...

  6. python爬虫——分析天猫iphonX的销售数据

    01.引言 这篇文章是我最近刚做的一个项目,会带领大家使用多种技术实现一个非常有趣的项目,该项目是关于苹果机(iphoneX)的销售数据分析,是网络爬虫和数据分析的综合应用项目.本项目会分别从天猫和京 ...

  7. scrapy-redis使用以及剖析

    scrapy-redis是一个基于redis的scrapy组件,通过它可以快速实现简单分布式爬虫程序,该组件本质上提供了三大功能: scheduler - 调度器 dupefilter - URL去重 ...

  8. urllib.error

    #捕获异常 import urllib.request import urllib.error try: response = urllib.request.urlopen('http://sasd. ...

  9. Collection集合框架详解

    [Java的集合框架] 接口: collection      map list     set 实现类: ArryList   HashSet HashMap LinkList   LinkHash ...

  10. MySQL 5.7 新特性之初始化

    1. 把二进制安装包下载放在/opt 目录下并解压 2. 创建软连接, 并添加运行环境 ln -s /usr/local/mysql /opt/mysql-5.7.18-linux-glibc2.5- ...