urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    # ajax 相关
    path("ajax_temp/", views.ajax_temp),
    path("ajax_sleep/", views.ajax_sleep),
    path("ajax_test/", views.ajax_test),
    path("ajax_sum/", views.ajax_sum),
    # path("ajax_json/", views.ajax_json),
    # path("upload/", views.upload),
]

 

views.py

from django.shortcuts import render, HttpResponse
from app01 import models

def ajax_sleep(request):
    import time
    time.sleep(3)
    return HttpResponse("睡了3s")

def ajax_temp(request):
    return render(request, "ajax_temp.html")


def ajax_test(request):
    return HttpResponse("test...")

from django.http import JsonResponse

def ajax_sum(request):
    if request.is_ajax():
        num1 = request.POST.get("num1")
        num2 = request.POST.get("num2")
        ret = {"status": 1, "msg": None}
        try:
            total = int(num1) + int(num2)
            ret['msg'] = total
        except Exception as e:
            ret['status'] = 0
            ret['msg'] = "请输入数字"
        # return HttpResponse(total)
        return JsonResponse(ret)
    ###  视图响应时,只能时HttpResponse或者JsonResponse,render和redirect不能作为ajax请求的返回对象。

 

ajax_temp.html

<button id="btn1">ajax_sleep</button>
<button id="btn2">ajax_test</button>
{% csrf_token %}

<div>
    <input type="text" id="i1"> + <input type="text" id="i2"> =
    <input type="text" id="i3"><button id="sum1">计算</button><span id="s1"></span>
</div>


<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>

<script>
    {#异步案例#}
    $("#btn1").click(function () {
        $.ajax({
            url: "/ajax_sleep/",
            type: "get",
            success: function (data) {
                console.log(data);
            }
        })
    });
    $("#btn2").click(function () {
        $.ajax({
            url: "/ajax_test/",
            type: "get",
            success: function (data) {
                console.log(data);
            }
        })
    });

    {#计算案例#}
    $("#sum1").click(function () {
        var num1 = $("#i1").val();
        var num2 = $("#i2").val();
        $.ajax({
            url: "/ajax_sum/",
            type: "post",
            data: {
                num1: num1,
                num2: num2,
                csrfmiddlewaretoken: $("[name=csrfmiddlewaretoken]").val(),
            },
            success: function (data) {
                // JSON.parse(data) 反序列化才能使用
                if (data.status){
                    $("#i3").val(data.msg);
                }else{
                    $("#s1").text(data.msg);
                    setTimeout(function () {
                        $("#s1").text("");
                    }, 2000)

                }

            }
        })
    });
</script>