django_project_demo/app/views/order.py
2024-08-24 03:25:23 +00:00

124 lines
4.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
订单管理
主要以模态窗口方式实现添加操作
"""
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将将查询到数据对象传递给forminstance=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编码格式