""" 对ajax的测试,前端数据是从task_list.html中提交过来的 主要用到 1.django的csrf认证(post请求时) 2.数据返回时使用的是json格式 3.数据接收request.POST,或request.GET 重点是返回给前端的数据是json格式 """ import json from django import forms from django.shortcuts import render, HttpResponse, redirect # 免除crsf认证,如果ajax请求时,不是表单提交所以会很复杂,导入他就行 from django.views.decorators.csrf import csrf_exempt from app.models import Task from app.utils.bootstrap import BootstrapModelForm from app import models from app.utils.pagination import Pagination class TaskModelForm(BootstrapModelForm): class Meta: model = models.Task fields = '__all__' # 所有字段 # 单独针对详细信息进行控件控制 widgets = { 'detail': forms.TextInput, # 'detail': forms.Textarea, } """ 任务管理 """ def task_list(request): # 猎取全部记录 queryset = models.Task.objects.all().order_by('-id') page_object = Pagination(request, queryset) # 实例化分页导航条类 page_queryset = page_object.page_queryset # 获得分完页的数据结果 # 生成分页导航条 page_nav = page_object.html() form = TaskModelForm() content = { 'form':form, 'queryset': page_queryset, # 分完页的数据结果 'page_nav': page_nav # 生成的页码导航条 } return render(request, 'task_list.html', content) @csrf_exempt def task_ajax(request): # print(request.GET) print(request.POST) # 接收到的数据 print(request.POST['n1']) # 一般来讲ajax返回的是一个JSON格式的数据 data_dict = {"status": True, "data": [11, 22, 33]} data_json = json.dumps(data_dict) return HttpResponse(data_json) @csrf_exempt def task_add(request): # print(request.POST) # 对ajax提交近来的数据进行校验 form = TaskModelForm(data=request.POST) if form.is_valid(): form.save() # 向数据表添加数据 # 将标记传回前端 data_dict = {"status": True, } return HttpResponse(json.dumps(data_dict)) # 如果有错误 # 将生成错误以json格式返回给前端 data_dict = {"status": False, 'error_msg': form.errors} return HttpResponse(json.dumps(data_dict, ensure_ascii=False)) # ensure_ascii编码格式 @csrf_exempt def task_edit(request): pass @csrf_exempt def task_delete(request, nid): """ 删除任务 """ Task.objects.filter(id=nid).delete() return redirect('/task/list/')