场景:

用户注册的时候,输入用户名之后,Ajax发送请求到后端,后端验证该用户名是否已经被注册,然后返回到注册页面提示用户。

1、模型:

from django.db import models

class User(models.Model):
name = models.CharField(max_length=20)
password = models.CharField(max_length=20)

2、路由

from django.contrib import admin
from django.urls import path
from app01.views import reg,reg_auth_user urlpatterns = [
path('admin/', admin.site.urls),
path('reg/',reg), #注册页面的路由
path('reg_auth_user/',reg_auth_user) #Ajax验证用户名的路由
]

  

3、视图函数

import json
from django.shortcuts import render,HttpResponse
from app01.models import User
import json def reg(request):
return render(request,'reg.html') #注册时返回一个注册的页面reg.html def reg_auth_user(request):
user = request.POST.get('user') #获取Ajax发送的user的值
ret = User.objects.filter(name=user) #从数据库获取name=user的数据对象
response = {"state": False, "err": ""} #准备要返回的数据
if ret: #如果数据库存在这个用户名,则返回'用户名已存在'
response['state'] = True
response['err'] = '用户名已被注册'
return HttpResponse(json.dumps(response)) #如果数据库不存在这个用户名,则返回空值''

  

4、reg.html注册页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
</head>
<body>
<h3>注册页面</h3>
用户名: <input type="text"> <span style="color: red" class="err"></span> {# 在input框中输入要注册的用户名,span标签用于存放后端返回的错误信息 #} <script>
$(':text').blur(function (){ {# 给input框添加一个失去焦点的事件 #}
$.ajax({ {# 发送一个Ajax请求 #}
url: '/reg_auth_user/', {# 请求到这个路由 #}
type: 'post', {# post请求方式 #}
data: {
user: $(':text').val() {# 获取发送的数据为键值对,user: input输入的注册用户名 #}
},
success: function (res) { {# 回调函数,res是后端返回的json格式数据 #}
res = JSON.parse(res) {# 将返回的数据反序列化成JS对象 #}
$('.err').html(res.err) {# 将返回的结果写入到页面的span标签中 #}
}
})
})
</script>
</body>
</html>

  

5、效果

Django——Ajax发送请求验证用户名是否被注册的更多相关文章

  1. 《ajax学习》之ajax+JavaScript事件验证用户名是否可注册

    当用户注册时,服务器数据库需要对用户输入的用户信息(以用户名为例子)进行验证,在不刷新页面的情况下又需要页面和服务器进行数据请求,最好的方法是用ajax异步请求. 一.实现思路: 1.用户输入信息 2 ...

  2. Ajax验证用户名是否被注册

    Ajax验证用户名是否被注册 var xmlHttp; function createXMLHttpRequest(){ // 创建XMLHttp请求对象 if(window.ActiveXObjec ...

  3. Ajax - 发送请求原理

    1,什么是ajax? Asynchronous JavaScript and XML(当然现在xml已经由json代替): 主要是用于前后台的交互(表单提交已经被废弃): 使用场景:前台获取数据.表单 ...

  4. ajax发送请求跨域 - uri java代理

    问题:ajax发送请求出现cors跨域 解决办法:可以通过java代理的方式,后台发送请求 1.get请求 public void proxyGet(String url) { try { URL r ...

  5. Ajax发送请求等待时弹出模态框等待提示

    主要的代码分为两块,一个是CSS定义模态框,另一个是在Ajax中弹出模态框. 查看菜鸟教程中的模态框教程demo,http://www.runoob.com/try/try.php?filename= ...

  6. ajax对象。同步与异步及ajax发送请求

    ajax对象的属性.方法 属性 readyState: Ajax状态码 * 0:表示对象已建立,但未初始化,只是 new 成功获取了对象,但是未调用open方法 1:表示对象已初始化,但未发送,调用了 ...

  7. Ajax实现异步刷新验证用户名是否已存在

    由于要做一个注册页面,看到许多网站上都是使用Ajax异步刷新验证用户名是否可用的,所以自己也动手做一个小实例 都是简单的实例,所以直接发代码 静态页面Ajax.html <html> &l ...

  8. ajax发送请求

    首先创建XMLHttpRequest对象,利用此对象发送请求 主页面 <!doctype html> <html lang="en"> <head&g ...

  9. 原生Ajax发送请求

    ajax  get&post 1.使用get发送请求,会有请求缓存 1)什么叫请求缓存,请求信息相同浏览器不会再向服务器发送请求,导致访问服务器失败. 2)解决:将随机数添加到请求路径后面参数 ...

随机推荐

  1. 大数据学习(06)——Ozone介绍

    前面几篇文章把Hadoop常用的模块都学习了,剩下一个新模块Ozone,截止到今天最新版本是0.5.0Beta,还没出正式版.好在官方网站有文档,还是中文版的,但是中文版资料没有翻译完整,我试着把它都 ...

  2. NODEJS对象

    1.全局对象 Node.js: global 交互模式下var声明的变量都属于全局下的变量,可以使用global访问,例如global.a 脚本模式下var声明的变量不属于全局下的变量.不能使用glo ...

  3. selenium元素定位之 八大元素定位

    进入网站,按F12,点击弹出框右上角的位置的小箭头,然后移到需要定位的元素上,点击一下即可定位元素(1) id定位(有id才可以定位)wd.find_element_by_id('') #输入id属性 ...

  4. 记一次 .NET 某WMS仓储打单系统 内存暴涨分析

    一:背景 1. 讲故事 七月中旬有一位朋友加wx求助,他的程序在生产上跑着跑着内存就飙起来了,貌似没有回头的趋势,询问如何解决,截图如下: 和这位朋友聊下来,感觉像是自己在小县城当了个小老板,规律的生 ...

  5. MVVM窗体show的弹窗事件

    RestMatCutWin restMatCutWindow;//定义一个窗体的全局变量 private void RestMatCutWinExecute() { if (restMatCutWin ...

  6. Python语言系列-07-面向对象2

    重构父类__init__方法 #!/usr/bin/env python3 # author:Alnk(李成果) # 需求:Dog类要新增一个实例属性,但是Cat类不需要 class Animal(o ...

  7. sqli-labs lesson 21-22

    less 21: username:admin password:admin 登录. 发现这里和之前不太一样.用到了base64加密而不是之前的明文了. 传送门:base64在线编码解码 所以要做的就 ...

  8. K8s 部署 Gitlab

    K8s 版本:1.20.6 这里使用的镜像不是官方的,而是 Gitlab 容器化中使用非常多的一个第三方镜像:sameersbn/gitlab,基本上和官方保持同步更新.地址:http://www.d ...

  9. SQL 练习17

    查询各科成绩最高分.最低分和平均分: 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 , 及格为>=60,中等为:70-80,优良为:80-9 ...

  10. Dockerfile 多阶段构建实践

    写在前面 在Docker Engine 17.05 中引入了多阶段构建,以此降低构建复杂度,同时使缩小镜像尺寸更为简单.这篇小作文我们来学习一下如何编写实现多阶段构建的Dockerfile 关于doc ...