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 相关文章推荐
python实现划词翻译
Apr 23 Python
python实现web方式logview的方法
Aug 10 Python
Python实现获取域名所用服务器的真实IP
Oct 25 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
Jun 11 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
Python使用统计函数绘制简单图形实例代码
May 15 Python
Mac安装python3的方法步骤
Aug 09 Python
python求前n个阶乘的和实例
Apr 02 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
Jun 14 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
python时间序列数据转为timestamp格式的方法
Aug 03 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
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
浅谈PHP的exec()函数无返回值排查方法(必看)
2017/03/31 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
JS 获取滚动条高度示例代码
2013/10/24 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
jQuery实现可编辑表格并生成json结果(实例代码)
2017/07/19 jQuery
Angular5给组件本身的标签添加样式class的方法
2018/04/07 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
python实现UDP协议下的文件传输
2020/03/20 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
盛大笔试题
2016/11/05 面试题
新闻网站实习自我鉴定
2013/09/25 职场文书
如何写一份好的自荐信
2014/01/02 职场文书
人力资源求职信
2014/05/25 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
奖学金申请个人主要事迹材料
2015/11/04 职场文书
创业计划书之美容店
2019/09/16 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电