分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

后台验证插件forms(基于ajax传输数据)

发布时间:2023-09-06 02:23责任编辑:沈小雨关键词:暂无标签

1.视图函数

from django.shortcuts import render, HttpResponse,redirect,reversefrom django import formsfrom django.forms import widgetsimport jsonfrom django.core.exceptions import ValidationErrorfrom loginapp import models# Create your views here.class Login_forms(forms.Form): ???user = forms.CharField(max_length=10, min_length=3, label=‘用户名‘, required=True, ??????????????????????????widget=widgets.TextInput(attrs={‘id‘: ‘user‘,‘class‘:‘col-md-6‘}), ??????????????????????????error_messages={‘max_length‘:‘最大长度为10‘,‘min_length‘:‘最短长度为3‘,‘required‘:‘不能为空‘}) ???pwd = forms.CharField(max_length=20, min_length=3, label=‘密码‘, required=True, ?????????????????????????widget=widgets.PasswordInput(attrs={‘id‘: ‘pwd‘,‘class‘:‘col-md-6‘}), ?????????????????????????error_messages={‘max_length‘:‘最大长度为20‘,‘min_length‘:‘最短长度为3‘,‘required‘:‘不能为空‘}) ???pwd_rs = forms.CharField(max_length=20, min_length=3, label=‘确认密码‘, required=True, ????????????????????????????widget=widgets.PasswordInput(attrs={‘id‘: "pwd2",‘class‘:‘col-md-6‘}), ????????????????????????????error_messages={‘max_length‘: ‘最大长度为20‘, ‘min_length‘: ‘最短长度为3‘, ‘required‘: ‘不能为空‘}) ???email = forms.EmailField(label=‘邮箱‘, required=True, ????????????????????????????widget=widgets.EmailInput(attrs={‘id‘: "email",‘class‘:‘col-md-6‘}), ????????????????????????????error_messages={‘required‘:‘不能为空!‘,‘invalid‘: ‘不符合邮箱格式‘}) ???def clean(self): ???????pwd = self.cleaned_data.get(‘pwd‘) ???????pwd_rs = self.cleaned_data.get(‘pwd_rs‘) ???????if pwd == pwd_rs: ???????????return self.cleaned_data ???????else: ???????????raise ValidationError(‘两次密码不一致‘) ???def clean_user(self): ???????user = self.cleaned_data.get(‘user‘) ???????user_pd = models.User.objects.filter(user=user).first() ???????if user_pd: ???????????raise ValidationError(‘用户名已存在!‘) ???????else: ???????????return userdef login(request): ???if request.method == "GET": ???????forms = Login_forms() ???if request.method == ‘POST‘: ???????msg_dic = json.loads(request.body.decode(‘utf-8‘)) ???????# print(msg_dic) ???????forms = Login_forms(msg_dic) ???????if forms.is_valid(): ???????????forms.cleaned_data.pop(‘pwd_rs‘) ???????????# print(forms.cleaned_data) ???????????models.User.objects.create(**forms.cleaned_data) ???????????return HttpResponse(json.dumps(‘s‘)) ???????else: ???????????# print(forms.cleaned_data, ‘不通过‘) ???????????return HttpResponse(json.dumps(forms.errors)) ???return render(request, ‘login.html‘, locals())

2.模板层

<!DOCTYPE html><html lang="zh"><head> ???<meta charset="UTF-8"> ???<title>登录</title> ???{% load static %} ???<script src={% static ‘jquery-3.3.1.js‘ %}></script> ???<script src="/static/bootstrap-3.3.7-dist/js/bootstrap.js"></script> ???<link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css"></head><body><div class="row"> ???<div class="col-md-6 col-md-offset-3"> ???????<h2>用户注册</h2> ???????{% for form in forms %} ???????????<p>{{ form.label }}:</p> ???????????<p>{{ form }}<p id={{ form.name }}sp>&nbsp;</p></p> ???????{% endfor %} ???????<p id="res" class="col-md-8">&nbsp;</p> ???????<button type="button" class="btn btn-success col-md-6" id="btn">注册</button> ???</div></div></body><script> ???$(‘#btn‘).click(function () { ???????var msg_dic = { ???????????‘user‘: $(‘#user‘).val(), ???????????‘pwd‘: $(‘#pwd‘).val(), ???????????‘pwd_rs‘: $(‘#pwd2‘).val(), ???????????‘email‘: $(‘#email‘).val() ???????}; ???????msg_dic = JSON.stringify(msg_dic); ???????$.ajax({ ???????????url: ‘/login/‘, ???????????type: ‘post‘, ???????????contentType: ‘application/json‘, ???????????data: msg_dic, ???????????dataType: ‘json‘, ???????????success: function (data) { ???????????????{#console.log(data);#} ???????????????if (data == ‘s‘) { ???????????????????{#console.log(typeof data);#} ???????????????????location.href = ‘/cg/‘ ???????????????} else { ???????????????????if (data.user) { ???????????????????????$(‘#usersp‘).text(data.user); ???????????????????} else { ???????????????????????$(‘#usersp‘).html(‘&nbsp;‘); ???????????????????} ???????????????????if (data.pwd) { ???????????????????????$(‘#pwdsp‘).text(data.pwd); ???????????????????} else { ???????????????????????$(‘#pwdsp‘).html(‘&nbsp;‘); ???????????????????} ???????????????????if (data.pwd_rs) { ???????????????????????$(‘#pwd_rssp‘).text(data.pwd_rs); ???????????????????} else { ???????????????????????$(‘#pwd_rssp‘).html(‘&nbsp;‘); ???????????????????} ???????????????????if (data.email) { ???????????????????????$(‘#emailsp‘).text(data.email); ???????????????????} else { ???????????????????????$(‘#emailsp‘).html(‘&nbsp;‘); ???????????????????} ???????????????????if (data.__all__) { ???????????????????????$(‘#res‘).text(data.__all__); ???????????????????}else{ ???????????????????????$(‘#res‘).html(‘&nbsp;‘); ???????????????????} ???????????????} ???????????} ???????}) ???})</script></html>

3.基础知识

字段参数

//字段参数max_length=最大值min_length=最小值label=标签label中字符required=判断是否可以为空 True不能为空 False可以为空widget = 输入框的属性 widget=widgets.TextInput(attrs={‘id‘: ‘user‘, ‘class‘: ‘col-md-6‘})error_messages= 错误信息 error_messages={‘max_length‘: ‘最大长度为10‘, ‘min_length‘: ‘最短长度为3‘, ‘required‘: ‘不能为空‘})

局部钩子校验

//定义一个函数,名字叫:clean_字段名字,内部,取出该字段,进行校验,如果通过,将该字段返回,如果失败,抛异常(ValidationError) ???def clean_user(self): ???????user = self.cleaned_data.get(‘user‘) ???????user_pd = models.User.objects.filter(user=user).first() ???????if user_pd: ???????????raise ValidationError(‘用户名已存在!‘) ???????else: ???????????return user

全局钩子校验

//程序能走到该函数,前面校验已经通过了,所以可以从cleaned_data中取出密码和确认密码 ???def clean(self): ???????pwd = self.cleaned_data.get(‘pwd‘) ???????pwd_rs = self.cleaned_data.get(‘pwd_rs‘) ???????if pwd == pwd_rs: ???????????return self.cleaned_data ???????else: ???????????raise ValidationError(‘两次密码不一致‘)

后台验证插件forms(基于ajax传输数据)

原文地址:https://www.cnblogs.com/jianhaozhou/p/9997875.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved