""" 订单管理 主要以模态窗口方式实现添加操作 """ import json import random from datetime import datetime from django.shortcuts import render, HttpResponse, redirect from app import models from app.models import Order from app.utils.form import OrderModelForm # 免除crsf认证,如果ajax请求时,不是表单提交所以会很复杂,导入他就行 from django.views.decorators.csrf import csrf_exempt from app.utils.pagination import Pagination def order_list(request): """ 订单列表 """ # 猎取全部记录 queryset = models.Order.objects.all().order_by('-id') page_object = Pagination(request, queryset) # 实例化分页导航条类 page_queryset = page_object.page_queryset # 获得分完页的数据结果 # 生成分页导航条 page_nav = page_object.html() form = OrderModelForm() content = { 'form': form, 'queryset': page_queryset, # 分完页的数据结果 'page_nav': page_nav # 生成的页码导航条 } return render(request, 'order_list.html', content) @csrf_exempt def order_add(request): """新建订单""" # 对ajax提交近来的数据进行校验 form = OrderModelForm(data=request.POST) print(form) if form.is_valid(): form.instance.oid = datetime.now().strftime('%Y%m%d%H%M%S') + str(random.randint(1000, 9999)) # 在models.py中定义的是user,是有主键约束的,所以django在生成数据表结构时,会自动加一个_id form.instance.user_id = request.session['info']['id'] 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编码格式 def order_delete(request): """删除订单""" # nid = request.GET['data'] Order.objects.filter(id=request.GET.get('nid')).delete() finish = {"status": True, } return HttpResponse(json.dumps(finish)) def order_detail(request): """ 获取订单的全部信息,返回给前端显示,用于修改使用 """ """ 方式1 返回的是一个对象取数据结果时较复杂""" # uid = request.GET.get('nid') # print(uid) # row_object = models.Order.objects.filter(id=uid).first() # if not row_object: # 数据不存在 # return HttpResponse(json.dumps({'status': False, 'error': '数据不存在!'})) # print(row_object) # # row_object本返回的是一个对象,不能够直接JSON,所以手对构建字典 # result_dict = { # 'status': True, # 'data': { # 'title': row_object.title, # 'price': row_object.price, # 'status': row_object.status, # }, # } # return HttpResponse(json.dumps(result_dict)) """ 方式2 """ uid = request.GET.get('nid') print(uid) row_dict = models.Order.objects.filter(id=uid).values('title', 'price', 'status').first() if not row_dict: # 数据不存在 return HttpResponse(json.dumps({'status': False, 'error': '数据不存在!'})) # row_dict 返回的是一个字典 result_dict = { 'status': True, 'data': row_dict } return HttpResponse(json.dumps(result_dict)) @csrf_exempt def order_edit(request): uid = request.GET.get('uid') # 1.先查询到该条记录 # 2.拿到POST请求过来的数据(data=request.POST),将将查询到数据对象传递给form(instance=row_data) row_data = Order.objects.filter(id=uid).first() if not row_data: data_dict = {"status": False, "tips": '数据不存在,请刷新后重试'} return HttpResponse(json.dumps(data_dict, ensure_ascii=False)) # ensure_ascii编码格式 # POST请求 form = OrderModelForm(data=request.POST, instance=row_data) # 拿到所有提交过来的数据 if form.is_valid(): # 数据校验 form.save() # 向 model = UserInfo 定义的表保存数据 # 将标记传回前端 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编码格式