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实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
简单了解OpenCV是个什么东西
Nov 10 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
python读取csv文件并把文件放入一个list中的实例讲解
Apr 27 Python
Python实现绘制双柱状图并显示数值功能示例
Jun 23 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
解决python线程卡死的问题
Feb 18 Python
python pandas时序处理相关功能详解
Jul 03 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
Oct 16 Python
Python基础详解之邮件处理
Apr 28 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
PHP实现简单的新闻发布系统实例
2015/07/28 PHP
PHP中strpos、strstr和stripos、stristr函数分析
2016/06/11 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
关于__defineGetter__ 和__defineSetter__的说明
2007/05/12 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[02:08]2014DOTA2国际邀请赛 430专访:力争取得小组前二
2014/07/11 DOTA
python类定义的讲解
2013/11/01 Python
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
python实现五子棋人机对战游戏
2020/03/25 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
Python解析json代码实例解析
2019/11/25 Python
基于python plotly交互式图表大全
2019/12/07 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
会计自我鉴定范文
2013/10/06 职场文书
优秀交警事迹材料
2014/01/26 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
考勤制度通知
2015/04/25 职场文书
学校教学管理制度
2015/08/06 职场文书
python如何在word中存储本地图片
2021/04/07 Python