124 lines
4.4 KiB
Python
124 lines
4.4 KiB
Python
"""
|
||
订单管理
|
||
主要以模态窗口方式实现添加操作
|
||
|
||
"""
|
||
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编码格式
|