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. STL next_permutation 算法原理和实现

    转载自:https://www.cnblogs.com/luruiyuan/p/5914909.html 目标 STL中的next_permutation 函数和 prev_permutation 两 ...

  2. JAVA学习笔记系列3-JVM、JRE和JDK的区别

    JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的“虚拟计算机”.它和os打交道 JRE(Java Runtime Environment)包含:Java ...

  3. $_SERVER['HTTP_REFER'] 和 session cookie 关系

    对Session和Cookie的区分与理解 先说session 对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上.但还是讲讲,别嫌老~ 有一些人赞成用SESSI ...

  4. input做一个开关按钮

    .mui-switch { width: 52px; height: 31px; position: relative; border: 1px solid #dfdfdf; background-c ...

  5. 关于CMD的一些小技巧

    1.cd命令无法切换路径怎么办? a)切换盘符不好使

  6. 深入理解Java中停止线程

    一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时是让线程在完成任务前去开启另外一条线程,必须放弃当前任务,而这个过程是不可预测,所以必 ...

  7. CCF-再卖菜-20180904

    可以说这道题出的不错,我是用动态规划做的 ( 严谨点说应该是记忆化搜索,我是递归版本,非递归我不会啊... 题意分析: x1  x2  x3 已知 x1+x2=t1或t1+1 x1+x2+x3=t2 ...

  8. C#词频统计 效能分析

    在邹老师的效能分析的建议下对上次写过的词频统计的程序进行分析改进. 效能分析:个人很浅显的认为就是程序的运行效率,代码的执行效率 1.VS 提供了自带的分析工具:performance tool (性 ...

  9. wikipedia 维基百科 语料 获取 与 提取 处理 by python3.5

    英文维基百科 https://dumps.wikimedia.org/enwiki/ 中文维基百科 https://dumps.wikimedia.org/zhwiki/ 全部语言的列表 https: ...

  10. ionic使用的一些技巧

    使用ionic总结: 1.全局禁用缓存的方法是:  $ionicConfigProvider.views.maxCache(0); 2. 在不同的用户输入场景下,需要显示不同的键盘模式以方便用户输入, ...