Django——Ajax发送请求验证用户名是否被注册
场景:
用户注册的时候,输入用户名之后,Ajax发送请求到后端,后端验证该用户名是否已经被注册,然后返回到注册页面提示用户。
1、模型:
1 2 3 4 5 6 | from django.db import models class User(models.Model): name = models.CharField(max_length = 20 ) password = models.CharField(max_length = 20 ) |
2、路由
1 2 3 4 5 6 7 8 9 | 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、视图函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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注册页面
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <! 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、效果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现