1.BBS项目之注册功能通过forms验证

from django import forms
from blog.models import User
from django.contrib.auth import authenticate class CheckForm(forms.Form):
username = forms.CharField(max_length=10, min_length=3)
password = forms.CharField(max_length=18, min_length=6)
re_password = forms.CharField(max_length=18, min_length=6)
telephone = forms.CharField(max_length=11, min_length=11) #?
email = forms.EmailField() def clean_username(self): cleaned_username = self.cleaned_data.get('username') return cleaned_username

forms简单编写与设置局部钩子

from django.shortcuts import render

from django.http import JsonResponse
from blog.checks import check_name, CheckForm
from blog.models import User # 定义接口规范
response_dic = {
'statue': 1,
'msg': 'ok',
'data': {}
} # 注册
def register(request):
if request.method == "GET":
return render(request, 'register.html')
if request.method == "POST":
# print(request.POST)
check_form = CheckForm(request.POST)
if check_form.is_valid():
# 除了re_password其余都是有用字段
cleaned_form = check_form.cleaned_data
cleaned_form.pop('re_password')
print(cleaned_form)
# 数据库插入数据
user = User.objects.create_user(**cleaned_form)
if user:
response_dic['statue'] = 1
response_dic['msg'] = 'ok'
response_dic['data'] = {}
else:
response_dic['statue'] = 2
response_dic['msg'] = 'error'
response_dic['data'] = {}
return JsonResponse(response_dic)

views视图层引用forms策略实现注册功能

2. ajax 请求调用后端数据库查看用户是否存在

# 用户名重复验证
def check_name(username):
print(username)
# user = authenticate(username=username)
user = User.objects.filter(username=username)
if user:
return '用户已存在'
else:
return 'OK' #写一个验证用户名的函数
# 校验用户名是否重名
def check_username(request):
if request.is_ajax():
username = request.GET.get('username', None)
msg = check_name(username)
response_dic['msg'] = msg return JsonResponse(response_dic) #views层调用check_name函数来返回给数据给前端的ajax请求
<script src="/static/bs-3.3.7/js/jquery-3.3.1.js"></script>
<script>
// 获取焦点事件: 所有.input-div下的input都有该事件
$('.input-div input').focus(function () {
$(this).next().text("")
}); // 失去焦点事件
$('#username').blur(function () {
// 发送用户名重名校验请求
var username = $(this).val();
var _this = this
// @前台先完成前端校验
if (username) { // 有内容才校验
$.ajax({
url: '/check_username/',
type: 'get',
data: {
username: username
},
success: function (data) {
if (data.msg != 'OK') {
$(_this).next().text(data.msg)
}
}
})
} }) // 失去焦点事件
$('#password').blur(function () {
// 发送用户名重名校验请求
var password = $(this).val();
var length = password.length;
if (length < 6) {
$(this).next().text("密码过短")
} else if (length > 16) {
$(this).next().text("密码过长")
}
}) // 表单值变化检测事件
$('#re_password').on('input', function () {
password = $('#password').val();
re_password = $(this).val();
console.log(password)
console.log(re_password)
if (password != re_password) {
$(this).next().text("密码不相同")
} else {
$(this).next().text("")
}
}) // 注册请求
$('.register').click(function () { key_values = $('.form').serializeArray(); // 这里是拿到form表单输入的全部内容信息 form_data = new FormData();
$.each(key_values, function (index, obj) {
// console.log(obj.name, obj.value)
form_data.append(obj.name, obj.value); // 已经包含了csrftoken
}); $.ajax({
url: "/register/",
type: 'post',
data: form_data,
contentType: false,
processData: false,
success: function (data) {
console.log(data)
} }) })
</script>

前端的ajax逻辑判断

BBS(第一天)项目之 注册功能实现通过forms验证与 前端ajax请求触发查询数据库判断用户是否存在的功能实现的更多相关文章

  1. 潭州课堂25班:Ph201805201 django 项目 第九课 图片验证码前台实现,判断用户是否注册功能实现 (课堂笔记)

    u胎代码实现 : 针对每一个 app 写个 js 脚本, 先给 users 的 app 应用创建个 js:在指定目录下的 js 文件夹下,创建 users 文件夹,下创建 suth.js ,图片验证 ...

  2. day72 bbs项目☞登录注册

    目录 一.表创建及同步 二.注册功能 二.登录页面搭建 一.表创建及同步 from django.db import models from django.contrib.auth.models im ...

  3. python实战项目练习-Django商城项目之注册功能实现

    设计到的前端知识 项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果 ...

  4. Django之BBS博客项目

    一.登陆功能(验证码) from geetest import GeetestLib from django.contrib import auth #使用极验滑动验证码的登陆 def login(r ...

  5. Vue.js开始第一个项目

    前端架构之路:使用Vue.js开始第一个项目   Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式.本文通过一个简单的实例开始上手Vue.js开发. 一.技术准备 使用 ...

  6. VB的第一个项目

     前言-----本人也是刚刚接触VB,企业的VB代码基本能看的懂,但是自己开发,只能呵呵.一般在刚学习一门新的语言时,很容易发生一些自己相当然的认识错误,so,记下并分享开发学习的过程,望指正.--- ...

  7. 【02】Jenkins:第一个项目

    写在前面的话 通过上一节我们成功的搭建起来 Jenkins,那么接下来就是体验如何构建我们的第一个项目了.当然在这之前我们得专门针对 Java 环境就行简单的配置. 全局工具配置 其实这次配置的主要还 ...

  8. day101:MoFang:模型构造器ModelSchema&注册功能之手机号唯一验证/保存用户注册信息/发送短信验证码

    目录 1.模型构造器:ModelSchema 1.SQLAlchemySchema 2.SQLAlchemyAutoSchema 2.注册功能基本实现 1.关于手机号码的唯一性验证 2.保存用户注册信 ...

  9. Surprise团队第一周项目总结

    Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...

随机推荐

  1. ubuntu 使用cron设置定时启动任务

    介绍 cron,是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业. 在Ubuntu server 下,cron是被默认安装并启动的:如果没有启动,自行设置并启动(chkconfig\s ...

  2. winform rar压缩包解压缩

    /// <summary>        /// 解压缩        /// </summary>        /// <param name="path& ...

  3. 剑指Offer 9. 变态跳台阶 (递归)

    题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题目地址 https://www.nowcoder.com/practice/ ...

  4. Python函数定义、文件操作(读写、修改)

    date:2018421 day3 一.函数定义 def  函数名(首字母大写) 增加程序可读性 #直接写函数名即可调用函数 #参数 ①.形参 ②.实参 ③.缺省参数 如果有默认值,调用的时候没有传递 ...

  5. LINUX系统配置

    LINUX系统配置 Linux 安装jdk方法; Linux Tomcat 安装与配置 Linux redis 安装与配置 (例1) Linux redis安装配置(例2) NGINX 安装 Linu ...

  6. Js高级 事件冒泡

    什么叫事件冒泡 当给父子元素的同一事件绑定方法时,触发了子元素身上的事件,执行完毕之后,也会触发父级元素的相同事件,这种传播机制叫事件冒泡. 取消事件冒泡 Event对象有个属性叫cancelBubb ...

  7. 关于JVM的一些冷知识

    (1) Java加载类的一般顺序: 1.静态属性,静态方法声明,静态块. 2.动态属性,普通方法声明,构造块. 3.构造方法. 当加载一个类时,JVM会根据属性的数据类型第一时间赋默认值(一举生成的) ...

  8. Spring Boot 非常好的学习资料

    from@https://gitee.com/didispace/SpringBoot-Learning Spring Boot 2.0 新特性学习 简介与概览 Spring Boot 2.0 正式发 ...

  9. Visual Studio 2017 常用快捷键

    1.窗口快捷键 Ctrl+W,W: 浏览器窗口 Ctrl+W,S: 解决方案管理器 (Solution) Ctrl+W,C: 类视图 (Class) Ctrl+W,E: 错误列表 (Error) Ct ...

  10. php配置php_pdo_mysql模块

    网上的都是什么编译安装的,总算找到一个简单的方法 安装好PHP yum install php php-fpm -y 直接安装pdo模块 yum install php-pdo_mysql 在/etc ...