Django + ajax

本文介绍了一种使用Ajax实现在用户输入用户名时实时检查用户名是否已存在于数据库的方法。通过编写前端JavaScript代码并结合Django后端实现,无需刷新页面即可提示用户姓名的可用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标签(空格分隔): 未分类


很多地方要用到ajax,还是要做一下的

我想了一下思路:
比如说,我们就只做一个判断输入用户名的时候,不用刷新,在前端提示该用户是不是在数据库里的功能;
实现方法肯定是,我们写进输入框,然后焦点离开输入框之后,用ajax把输入框的内容传到后台,然后验证之后返回一个状态标识(用户名是否存在数据库的标识)

然后我们就可以写出
首先简单写一个表单做示例

<form action="" method="post">
    {% csrf_token %}
    用户名: <input name="username" id="username" />
    <br>
    <p id="hint"></p>
    <br>
    <input type="submit" value="提交">
</form>

接着是js函数

<script type="text/javascript" 
src='{% static 'scripts/jquery-2.2.0.js'%}'>
</script>
    <script>
        $(document).ready(function(){
          $("#username").blur(function(){
            var uname = $("#username").val();
            $.get("/find",{'username':uname}, function(ret){
                $('#hint').html(ret);
            })
          });

        });
    </script>

应该不难理解吧
- blur函数是jQuery的焦点离开的触发函数;
- ‘/find’是我们在Django后台定义的路由,我们在urls.py里如下定义:

from User.views import find
urlpatterns = [
    # ...其他url
    url(r'^find$', find, name='find'),
]    
  • 然后后台实现find函数如下(因为我们这里是通过url传参,函数的参数表并不用定义,访问到这个函数的url格式是‘/find?username=…’):
def find(request):
    user_name = request.GET['username']
    try:
        user = User.objects.get(user_name = user_name)
        return HttpResponse("exist")
    except:
        return HttpResponse("not exist")

上述几步应该就可以实现功能了


以下的是讲如何将上述功能整合到一个公共模块,然后子页面调用,大家想看就看。

思路:

我们可以把js函数写到check.html(公共模板)里,但是如果这样的话,因为我们的函数是通过前端控件的id来处理动作,那么,我们在继承的时候,所有前端控件的id都必须相同,我们就假设所有用到该功能的输入框为id = ‘username’;

我们写一个check.html放到Django的公共模板(公共的templates文件夹)里:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    {% block script %}
        {% load staticfiles %}
        <script type="text/javascript" 
        src='{% static 'scripts/jquery-2.2.0.js'%}'></script>
        <script>
            $(document).ready(function(){
              $("#username").blur(function(){
                var uname = $("#username").val();
                $.get("/find",{'username':uname}, function(ret){
                    $('#hint').html(ret);
                })
              });

            });
        </script>
    {% endblock%}

</head>
<body>
 {% block body %} body {% endblock %}
</body>
</html>

然后我们的表单的html就是

<!DOCTYPE html>
{% extends "check.html" %}
<html lang="en">
<head>

    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
{% block body %}


    <h1>This is test!</h1>
    <form action="" method="post">
        {% csrf_token %}
        用户名: <input name="username" id="username" />
        <br>
        <p id="hint"></p>
        <br>
        <input type="submit" value="提交">
    </form>

{% endblock %}
</body>
</html>

是不是很详细~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值