Ajax请求

目前浏览器向网站发送请求时:为URL和表单的形式提交。

  • GET
  • POST

特点是:提交后页面刷新。

除此之外,可以基于Ajax向后台发送请求(异步请求)

  • 依赖jQuery

  • 编写ajax代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $.ajax({
    url:"发送的地址",
    type:"get",
    data:{
    n1:123,
    n2:456
    },
    success:function(res){
    console.log(res)
    }
    })

1、使用Ajax提交post请求

需要导入csrf_exempt

1
2
3
4
5
6
from django.views.decorators.csrf import csrf_exempt

# 在URL函数上方加上装饰器
@csrf_exempt
def xxx(request):
pass

2、Ajax请求返回值一般是json格式

1
2
3
4
5
6
7
8
9
from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import HttpResponse
from json

# 在URL函数上方加上装饰器
@csrf_exempt
def xxx(request):
data_dic = {"status":True, "data":[1,2,3]}
return HttpResponse(json.dumps(data_dic)) # json.dumps(data_dic)转成json

3、案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# ajax案例
from django.views.decorators.csrf import csrf_exempt

def task_ajax_list(request):
form = TaskModelForm()
return render(request, "task_ajax_list.html", {"form": form})


# 用Ajax,post请求时。在URL函数上方加上装饰器
@csrf_exempt
def task_ajax_add(request):
# 1.用户发送过来的数据做校验(ModelForm进行校验)
form = TaskModelForm(data=request.POST)
if form.is_valid():
form.save()
data_dict = {"status": True, "data": [1, 2, 3]}
return HttpResponse(json.dumps(data_dict))
# 2. 如果出错,则后端返回错误信息
data_dict = {"status": False, "error": form.errors}
return HttpResponse(json.dumps(data_dict, ensure_ascii=False))