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、效果

 

posted @   映辉  阅读(209)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示