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标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户 ...
随机推荐
- STM32——CAN总线波特率和位时序详解
本人用的单片机是STM32F407,其它型号的单片机类似,可做参考! 一.标准CAN协议位时序概念 由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间 ...
- 多线程模块的condition对象
Python提供的Condition对象提供了对复杂线程同步问题的支持.Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还提供了wait和notify方 ...
- TensorFlow中numpy与tensor数据相互转化
numpy与tensor数据相互转化: *Numpy2Tensor 虽然TensorFlow网络在输入Numpy数据时会自动转换为Tensor来处理,但是我们自己也可以去显式的转换: data_ten ...
- TensorFlow 拾遗
1..Here None in placeholder means that a dimension can be of any length. 2.. 3.. 4.. 5.. tf.mul ...
- CSP2019 退役记
本来想写"退役在即"的,考完 Day2 后直接改成"退役记"了 Day 0 在 ssf 的机房里继续变弱,自己写了一遍 splay 板子,居然写对了,开心 非常 ...
- iOS native plugin 的代码sample
https://bitbucket.org/Unity-Technologies/iosnativecodesamples/src/stable/ 不在这个stable版本 在2017 dev这个版本
- [HBase]region compaction流程
- 2-删除IPC$的方式
一.使用命令临时删除IPC$的方式 1.查看IPC$是否启用 命令:net share 2.删除IPC$功能 命令:net share ipc$ /delete 注:使用命令删除后,重启服务器后,IP ...
- CWnd与HWND,GetSafeHwnd()与m_hWnd
HWND是Windows系统中的窗口句柄,CWnd是MFC中的窗体类,两者的所属不同.CWnd对HWND进行了封装类,更加高级也更加简化. HWND是Window内核处理对象,系统通过HWND进行操作 ...
- luogu 4234 最小差值生成树 LCT
感觉码力严重下降~ #include <bits/stdc++.h> #define N 400006 #define inf 1000000000 #define setIO(s) fr ...