Django实现表单验证


Posted in Python onSeptember 08, 2018

本文实例为大家分享了Django实现表单验证的具体代码,供大家参考,具体内容如下

models.py

class Users(models.Model):
  nickname = models.CharField(max_length=16, null=False, blank=False, unique=True)
  email = models.EmailField(max_length=32, null=False, blank=False, unique=True)
  password = models.CharField(max_length=64, null=False, blank=False)
  head = models.ImageField(default="decault.png")
  age = models.CharField(max_length=3,blank=True,null=True)
  sex = models.CharField(max_length=2, blank=True, null=True)
  isactivate = models.BooleanField(default=False)

  def save(self):
    if not self.password.startswith('pbkdf2_'):
      self.password = make_password(self.password)
    super().save()

form.py

from django import forms
from django.core.exceptions import ValidationError

from user.models import Users

#定义验证器
def nickname_validate(nickname):
  u = Users.objects.filter(nickname=nickname)
  if len(u):
    print(len(u))
    raise ValidationError('用户名已存在')

#定义表单
class RegisterForm(forms.Form):
  nickname = forms.CharField(validators=[nickname_validate],
                label='用户名',
                max_length=16,
                min_length=4,
                required=True,
                widget= forms.TextInput(),
                )

  password = forms.CharField(label='密码',
                max_length=64,
                min_length=6,
                required=True,
                widget=forms.PasswordInput())

  email = forms.EmailField(label='邮箱',
               max_length=32,
               required=True)

  age = forms.CharField(label='年龄',
             max_length=3,
             required=False)

  sex = forms.ChoiceField(label='性别',
              choices = ((0,'男'),(1,'女'),),
              required=False)

view.py

from user.forms import RegisterForm
from user.models import Users

def register(request):
  if request.method == 'POST':
    form = RegisterForm(request.POST)
    if form.is_valid():
      u = Users()
      u.nickname = form.cleaned_data['nickname']
      u.email = form.cleaned_data['email']
      u.password = form.cleaned_data['password']
      u.age = form.cleaned_data['age']
      u.sex = form.cleaned_data['sex']
      u.save()
      return render(request,'user_info.html')
    else:
      return render(request, 'register.html',context={'form':form,'errors': form.errors})
  else:
    form = RegisterForm()
  return render(request,'register.html',context={'form':form})

register.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>注册</title>
</head>
<body>
  <form class="form" action="{% url 'user:register' %}" method="post">
    {% csrf_token %}
    <table>
      {{ form.as_p }}
    </table>
    <button type="submit" class="btn btn-primary btn-block">注册
    </button>
    <input type="hidden" name="next" value="{{ next }}"/>
  </form>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
Python构建图像分类识别器的方法
Jan 12 Python
Python中extend和append的区别讲解
Jan 24 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
Python 实现自动导入缺失的库
Oct 29 Python
如何基于python实现脚本加密
Dec 28 Python
keras获得model中某一层的某一个Tensor的输出维度教程
Jan 24 Python
Python使用Socket实现简单聊天程序
Feb 28 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
Python代码执行时间测量模块timeit用法解析
Jul 01 Python
python实现排序算法解析
Sep 08 #Python
TensorFlow实现Logistic回归
Sep 07 #Python
tensorflow实现简单逻辑回归
Sep 07 #Python
Tensorflow使用支持向量机拟合线性回归
Sep 07 #Python
TensorFlow实现iris数据集线性回归
Sep 07 #Python
TensorFlow实现模型评估
Sep 07 #Python
使用tensorflow实现线性svm
Sep 07 #Python
You might like
用session做客户验证时的注意事项
2006/10/09 PHP
动态生成gif格式的图像要注意?
2006/10/09 PHP
php在服务器执行exec命令失败的解决方法
2012/03/03 PHP
ThinkPHP连接数据库的方式汇总
2014/12/05 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
PHP执行普通shell命令流程解析
2020/08/24 PHP
DOM 基本方法
2009/07/18 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
Vue CLI3基础学习之pages构建多页应用
2019/06/02 Javascript
Python3.5集合及其常见运算实例详解
2019/05/01 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
Python Pillow.Image 图像保存和参数选择方式
2020/01/09 Python
python缩进长度是否统一
2020/08/02 Python
一款超酷的js+css3实现的3D标签云特效兼容ie7/8/9
2013/11/18 HTML / CSS
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
2013/01/06 HTML / CSS
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
创建服务型党组织实施方案
2014/02/25 职场文书
亮化工程实施方案
2014/03/17 职场文书
《秋游》教学反思
2014/04/24 职场文书
爱护公共设施的标语
2014/06/24 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
mysql查找连续出现n次以上的数字
2022/05/11 MySQL