BBS(第一天)项目之 注册功能实现通过forms验证与 前端ajax请求触发查询数据库判断用户是否存在的功能实现
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请求触发查询数据库判断用户是否存在的功能实现的更多相关文章
- 潭州课堂25班:Ph201805201 django 项目 第九课 图片验证码前台实现,判断用户是否注册功能实现 (课堂笔记)
u胎代码实现 : 针对每一个 app 写个 js 脚本, 先给 users 的 app 应用创建个 js:在指定目录下的 js 文件夹下,创建 users 文件夹,下创建 suth.js ,图片验证 ...
- day72 bbs项目☞登录注册
目录 一.表创建及同步 二.注册功能 二.登录页面搭建 一.表创建及同步 from django.db import models from django.contrib.auth.models im ...
- python实战项目练习-Django商城项目之注册功能实现
设计到的前端知识 项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果 ...
- Django之BBS博客项目
一.登陆功能(验证码) from geetest import GeetestLib from django.contrib import auth #使用极验滑动验证码的登陆 def login(r ...
- Vue.js开始第一个项目
前端架构之路:使用Vue.js开始第一个项目 Vue.js做为目前前端最热门的库之一,为快速构建并开发前端项目多了一种思维模式.本文通过一个简单的实例开始上手Vue.js开发. 一.技术准备 使用 ...
- VB的第一个项目
前言-----本人也是刚刚接触VB,企业的VB代码基本能看的懂,但是自己开发,只能呵呵.一般在刚学习一门新的语言时,很容易发生一些自己相当然的认识错误,so,记下并分享开发学习的过程,望指正.--- ...
- 【02】Jenkins:第一个项目
写在前面的话 通过上一节我们成功的搭建起来 Jenkins,那么接下来就是体验如何构建我们的第一个项目了.当然在这之前我们得专门针对 Java 环境就行简单的配置. 全局工具配置 其实这次配置的主要还 ...
- day101:MoFang:模型构造器ModelSchema&注册功能之手机号唯一验证/保存用户注册信息/发送短信验证码
目录 1.模型构造器:ModelSchema 1.SQLAlchemySchema 2.SQLAlchemyAutoSchema 2.注册功能基本实现 1.关于手机号码的唯一性验证 2.保存用户注册信 ...
- Surprise团队第一周项目总结
Surprise团队第一周项目总结 团队项目 基本内容 五子棋(Gobang)的开发与应用 利用Android Studio设计一款五子棋游戏,并丰富其内涵 预期目标 实现人人模式:2个用户可以在同一 ...
随机推荐
- Linux分区知识及企业场景分区76
文件系统就相当于装修一样.这个硬盘拿过来了,分完区了,没有格式化. 没有格式化就相当于没有装修.[分区]不是必须的. 如果没有文件系统就不能放数据,文件系统可以理解为一个软件, 它的实现形式是软件,这 ...
- php之强制回调类型callable
<?php function demo(callable $fn) { $fn(); } function callback() { echo __FUNCTION__,'<br/> ...
- #20175120彭宇辰 java第五周学习总结
第六章 接口与实现 教材学习内容总结 接口-接口声名interace -接口体1.只有常量声明和抽象方法2.所有常量和方法的访问权限都为public3.常量都为static常量4.可省略pulic\s ...
- yaf nginx 设置
#test1server { listen 80; listen [::]:80; root /vagrant_data/aaa/public; index index.html index.htm ...
- ArrayUtil的创建和使用
求数组最小值求数组最大值遍历数组元素求数组总和求数组平均数求数组反转实现数组的复制对数组进行排序 写入的方法和包: public class ArrayUtil { //求数组的最大值 public ...
- psql备份和恢复(ubuntu)
备份 sudo pg_dump -U username -f filename.sql dbname 恢复 psql -U username -f filename.sql dbname -- ...
- 深入学习Motan系列(四)—— 客户端
困惑的袋鼠,对框架的把握有些茫然,但是仍然一步步向前,行动总比一直迷茫停止不前要好,您说呢,各位客官? 这篇开始客户端的分析.有些地方的代码,就不每段都标出了,中间有跳跃的地方,请自己对照代码来看.鄙 ...
- 01python语言程序设计基础——初识python
1.python的字符串中format函数用法 format 函数可以接受不限个参数,位置可以不按顺序. In [2]: "{} {}".format("hello& ...
- c#读sql server数据添加到MySQL数据库
using System;using System.Collections.Generic;using System.Text;using Console = System.Console;using ...
- spingMVC+mybatis+spring-session共享内存配置
1. redis依赖: <dependency> <groupId>org.springframework.session</groupId> <artifa ...