Django中Form的基本使用
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的基本使用的更多相关文章
- Django中Form验证
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一,Form验证 第一种操作:主要是这三个函数 ...
- django中form表单的提交:
一,关于表单: 表单在百度百科的解释: 表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...
- Django 中 form 介绍
目录 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...
- Django中Form组件的使用
Form介绍 HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...
- django中form组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- 如何写django中form的测试用例
可简可繁, 可插库,可字符, 要测试valid,也要测试invalid, 可用csrf,也可用context. 放一个全面的, 实践中,找一个最优的组合就好. class NewTopicTests( ...
- Django 中form的用法
form的主要作用:1.在html中生成表单框架,2.验证数据(实话实说,很简洁,但不实用,灵活性差) from django.db import models # Create your model ...
- Django中Form的Textarea字段
开始以为是这个样子: class BlogForm(forms.Form): title = forms.CharField(required = True) content = forms. ...
- django中form页面刷新后自动提交的解决方案
如果一个页面包含了form,同时这个form中的提交按钮是type=submit的input的时候,你刷新该页面,就会有弹窗提示是否重新提交表单,这个特性不胜其烦,常见解决方法有两个: 第一种是前端的 ...
随机推荐
- JAVA_SE基础——66.StringBuffer类 ③
如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer). StringBuffer 其实就是一个存储字符 的容器. 容器的具备 的行为 常用方法 String 增加 ap ...
- Python扩展模块——调用WindowsAPI(pywin32的简单使用)
这块使用的比较少,只用到了模拟键盘按键, 调用鼠标比较费事,是通过像素坐标实现的,如果没有特殊需求或万不得已不建议使用 import win32con import win32api win32api ...
- linux下git常用命令
1 安装: sudo apt-get install git 2 创建一个版本库: 新建一个文件夹,进入这个目录之后 git init 3 创建一个版本: git add 文件名或目录 #表示将当前文 ...
- idea中使用svn,忽略本地修改的指定的文件
1.打开version control 2.可以查看目前忽略的文件 3.配置要忽略的文件 4.可以用通配符忽略匹配的文件 还有第二种方法,那就是: 在svn提交的界面,如果是没有加入到version- ...
- __new__ 单例
a.实例化类 实例化一个类时 1. 创建一个对象,调用__new__方法,如果没有会调用父类的__new__方法 2. 调用__init__方法 3. 返回对象的引用 class Dog(object ...
- 给定了经纬度的一张my_latlng表,和一个my_grid表,怎么实现my_latlng表回mygrid中的id?
场景: 假设我们拥有一个拥有了一系列经纬度的表my_latlng(lat string,lng string)表,还有一张给定的栅格表my_grid(gridid bigint,centerlng d ...
- mysql中出现Unknown column 'qwe' in 'field list'的错误
下面是我建表的代码 输入数据的代码 可以看到出现了类似Unknown column 'qwe' in 'field list'的错误 当时看了好久改了又改都没有找到错误,直道我在一次打C语言代码的过程 ...
- NLog日志管理工具(转)
一.通过VS建立一个控制台应用程序. 二.打开程序包管理器控制台.具体操作如下:[工具]>[库程序包管理器]>[程序包管理器控制台]. 三.在程序包管理器控制台下输入命令:Install- ...
- java中包的定义
对包中的java程序进行编译(cmd) 编译:javac -d . Test.java 执行:java com.java.demo.Test package com.java public class ...
- 再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结
这篇是对angularJS的一些疑点回顾,是对目前angularJS开发的各种常见问题的整理汇总.如果对文中的题目全部了然于胸,觉得对整个angular框架应该掌握的七七八八了.希望志同道合的通知补充 ...