Djang之ModelForm组件的简单使用
ModelForm组件的简单使用
models.py
from django.db import models class UserInfo(models.Model):
username = models.CharField(max_length=32)
email = models.EmailField(max_length=32)
phone = models.CharField(max_length=32)
password = models.CharField(max_length=64) def __str__(self):
return self.username
forms.py
import re
from django import forms
from django.forms import widgets as form_widgets
from account.models import UserInfo class RegisterForm(forms.ModelForm):
password = forms.CharField(
min_length=6,max_length=32,
error_messages={
'required':'密码不能为空',
'min_length':'密码长度必须大于6小于32',
'max_length':'密码长度必须大于6小于32',
},
widget=forms.PasswordInput()
)
password_confirmed = forms.CharField(
error_messages={'required':'确认密码不能为空'},
widget=forms.PasswordInput()
)
class Meta:
model = UserInfo
fields = '__all__'
error_messages = {
'username':{
'required': '用户名不能为空',
},
'email': {
'required': '邮箱地址不能为空',
'invalid': '邮箱地址格式错误',
},
'phone': {
'required': '电话号码不能为空',
},
}
widgets = {
'username':form_widgets.TextInput(),
'email':form_widgets.EmailInput(),
'phone':form_widgets.TextInput(),
} def __init__(self, *args, **kwargs):
super(RegisterForm, self).__init__(*args, **kwargs) def clean_username(self):
value = self.cleaned_data['username']
patten = re.compile(r'^[a-zA-Z0-9.@_]{2,16}$')
if not patten.match(value):
raise forms.ValidationError('用户名应该是由大小写字母/数字/特俗符号组成(.@_)的2到16位字符串')
return value def clean_phone(self, ):
value = self.cleaned_data['phone']
patten = re.compile(r'^(13[0-9]|14[5-9]|15[0-3,5-9]|16[2,5,6,7]|17[0-8]|18[0-9]|19[1,3,5,8,9])[0-9]{8}$')
if not patten.match(value):
raise forms.ValidationError('手机号码格式错误')
if UserInfo.objects.filter(phone=value).count():
raise forms.ValidationError('手机号码已经存在')
return value def clean(self):
password = self.cleaned_data.get("password")
password_confirmed = self.cleaned_data.get("password_confirmed")
if password != password_confirmed:
self.add_error('password_confirmed', forms.ValidationError('密码不一致'))
return self.cleaned_data
return self.cleaned_data
views.py
from django.shortcuts import render
from django.views import View
from account.forms import RegisterForm
from django.shortcuts import render, redirect
from django.core.urlresolvers import reverse class RegisterView(View):
def get(self,request):
context = { 'form':RegisterForm() }
return render(request, 'register.html', context)
def post(self,request):
form = RegisterForm(request.POST)
if form.is_valid():
form.save()
return redirect(reverse('account:index'))
return render(request, 'register.html', {'form':form}) class IndexView(View):
def get(self,request):
return render(request,'index.html')
register.html
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="POST" novalidate>
{% csrf_token %}
<p> 用户名:{{ form.username }} {{ form.errors.username.0 }} </p>
<p> 密码:{{ form.password }} {{ form.errors.password.0 }} </p>
<p> 确认密码:{{ form.password_confirmed }} {{ form.errors.password_confirmed.0 }} </p>
<p> 邮箱:{{ form.email }} {{ form.errors.email.0 }}</p>
<p> 手机:{{ form.phone }} {{ form.errors.phone.0 }}</p>
<input type="submit" value="提交" />
</form>
</body>
</html>
Djang之ModelForm组件的简单使用的更多相关文章
- day063 form 和modelform组件
注册功能: (写一个简单的注册功能,要求用户名长度不得小于6位.) 普通方式写注册功能 views视图下: def register(request): error_msg=' ' if reque ...
- Django之Form、ModelForm 组件
Django之Form.ModelForm 组件 一.Form组件: django框架提供了一个form类,来处理web开发中的表单相关事项.众所周知,form最常做的是对用户输入的内容进行验证,为此 ...
- {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm
Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...
- ModelForm组件
ModelForm组件 Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用: ...
- Django基础之forms组件中的ModelForm组件
Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样 ...
- Django - ModelForm组件
一.ModelForm组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样一张学生表, ...
- Django框架 之 modelform组件
Django框架 之 modelform组件 浏览目录 创建mldelform 添加记录 编辑记录 Django框架中的modelform组件 通过名字我们可以看出来,这个组件的功能就是把model和 ...
- ModelForm组件介绍
照抄自:http://www.jb51.net/article/126786.htm ModelForm组件如同它的名字一样就是把model和form结合起来,在有些场景可以起到意想不到的效果. 先来 ...
- 12.Django基础十之Form和ModelForm组件
一 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户 ...
随机推荐
- MySQL8.0.17下载与安装
下载环境:Windows 10 下载地址: https://dev.mysql.com/downloads/mysql/ 1.解压压缩包,修改解压目录. 2.在E:\mysql-8.0.17-winx ...
- 《浏览器工作原理与实践》<04>从输入URL到页面展示,这中间发生了什么?
“在浏览器里,从输入 URL 到页面展示,这中间发生了什么? ”这是一道经典的面试题,能比较全面地考察应聘者知识的掌握程度,其中涉及到了网络.操作系统.Web 等一系列的知识. 在面试应聘者时也必问这 ...
- java——maven依赖版本冲突
博客:maven依赖jar包时版本冲突的解决
- vmware 虚拟配置固定IP就无法联网 centos
centos7虚拟机初始运行时ip是动态随机分配的 通过修改etc/sysconfig/network-scripts/ifcfg-ens33文件的配置可以设置固定的ipTYPE=EthernetPR ...
- CF901C Bipartite Segments[点双+二分+前缀优化]
不想翻译了,直接放luogu翻译 说了没有偶环,也就是说全是奇环,再结合二分图性质,那么暴力的话,固定左端点,增大序号,加点直到产生环就不合法了.也就是说,任何一个环,只要他上面的数全都被加了,就不合 ...
- USC-- compute shader ps vs
http://cdn.imgtec.com/sdk-documentation/PowerVR%20Compute%20Development%20Recommendations.pdf powerV ...
- Hive启动报错Terminal initialization failed; falling back to unsupported java.lang.Incomp
这个报错需要删除hadoop目录下,需要删除下面目录下的文件,重启hadoop和hive即可 $HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar
- 题解 [BZOJ4368][IOI2015]boxes纪念品盒
题面 解析 可以发现,发纪念品有三种方式: 从左边走再原路返回. 从右边走再原路返回. 走一圈. 注意到,第三种走法最多只会走一次, 因为如果走了多次,那发放的物品数量就会>=\(2k\), 那 ...
- uni-app引入css动画库
引入Animate动画库 Animate中文网地址:http://www.animate.net.cn/ Animate下载地址:https://daneden.github.io/animate.c ...
- python--批量修改文件夹名
python代码如下: import os , re import os.path rootdir = r'C:\Users\Administrator\Desktop\222' # rootdir ...