博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django基于form组件实现注册校验
阅读量:2225 次
发布时间:2019-05-09

本文共 3640 字,大约阅读时间需要 12 分钟。

一 基本流程

1 创建form组件对应的类,比如LoginForm

2 前端的三种渲染方式:

渲染方式三种:1
{% csrf_token %} {
{ form_obj.as_p }}
2
{% csrf_token %}
{
{ form_obj.user }}
{
{ form_obj.errors.user.0 }}
{
{ form_obj.pwd }}
{
{ form_obj.errors.pwd.0 }}
3
{% csrf_token %} {% for field in form_obj %}
{
{ field }}
{% endfor %}

  

二 注册校验

from django.core.exceptions import NON_FIELD_ERRORS, ValidationError

from django.forms import widgets

1 class RegForm(forms.Form): 2     user = forms.CharField(max_length=18, min_length=3, 3                            error_messages={ 4                                'required': '不能为空', 5                                'min_length': 'too short', 6                                'max_length': "too long" 7                            }) 8     pwd = forms.CharField(max_length=32, min_length=3, 9                           error_messages={10                               'max_length': "too long",11                               'required': '不能为空',12                               'min_length': 'too short',13                           },14                           widget=widgets.PasswordInput(attrs={}))15     repeat_pwd = forms.CharField(label='确认密码',16                                  max_length=32,17                                  error_messages={},18                                  widget=widgets.PasswordInput(attrs={}))19     email = forms.EmailField(20         error_messages={21             "invalid": '格式错误'22         }23     )24 25     tel = forms.CharField()26 27     def clean_user(self):28         val = self.cleaned_data.get("user")29         ret = Userinfo.objects.filter(name=val)30         if not ret:31             return val32         else:33             raise ValidationError("该用户已经注册")34 35     def clean_tel(self):36         val = self.cleaned_data.get('tel')37         import re38         ret = re.search("1[356789]\d{9}$", val)39         if ret:40             return val41         else:42             raise ValidationError("手机号格式错误")43 44     def clean(self):45         pwd = self.cleaned_data.get('pwd')46         repeat_pwd = self.cleaned_data.get('repeat_pwd')47         if pwd == repeat_pwd:48             return self.cleaned_data49         else:50             raise ValidationError("两次密码不一致")
forms
1 def reg(request): 2     if request.method == 'POST': 3         reg_form = RegForm(request.POST) 4         if reg_form.is_valid(): 5             print(reg_form.cleaned_data)  # dict 6             name = reg_form.cleaned_data.get("user") 7             pwd = reg_form.cleaned_data.get("pwd") 8             Userinfo.objects.create(name=name, pwd=pwd) 9 10             return redirect('/login/')  # 注册成功去登录11         else:12             all_error = reg_form.errors.get("__all__")13             return render(request, 'reg.html', locals())14 15     reg_form = RegForm()16     return render(request, 'reg.html', {
'reg_form': reg_form})
views
1  2 

注册页面

3
4 {% csrf_token %} 5 {% for field in reg_form %} 6
7
8 {
{ field }}
{
{ field.errors.0 }}
9 {% if field.label == '确认密码' %}10
{
{ all_error.0 }}
11 {% endif %}12
13 {% endfor %}14
15
16
reg.html

 

转载于:https://www.cnblogs.com/iyouyue/p/8406244.html

你可能感兴趣的文章
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
分布式系统理论基础1: 一致性、2PC和3PC
查看>>
分布式系统理论基础6:Raft、Zab
查看>>
搞懂分布式技术1:分布式系统的一些基本概念
查看>>
搞懂分布式技术2:分布式一致性协议与Paxos,Raft算法
查看>>
搞懂分布式技术6:Zookeeper典型应用场景及实践
查看>>
搞懂分布式技术10:LVS实现负载均衡的原理与实践
查看>>
搞懂分布式技术11:分布式session解决方案与一致性hash
查看>>
搞懂分布式技术12:分布式ID生成方案
查看>>