You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
164 lines
5.3 KiB
164 lines
5.3 KiB
2 years ago
|
from django.shortcuts import render, redirect, reverse
|
||
|
from django.http.response import JsonResponse
|
||
|
from django.views.generic.base import View
|
||
|
|
||
|
from apps.goods.models import *
|
||
|
from apps.goods.forms import *
|
||
|
|
||
|
|
||
|
# Create your views here.
|
||
|
class GoodCateView(View):
|
||
|
def get(self, request):
|
||
|
cates = GoodsCategory.objects.all()
|
||
|
print(cates)
|
||
|
return render(request, 'goods/cate_index.html', {'cates': cates})
|
||
|
|
||
|
def post(self, request):
|
||
|
pass
|
||
|
|
||
|
|
||
|
class GoodCateAddView(View):
|
||
|
def __init__(self):
|
||
|
self.alist = []
|
||
|
|
||
|
def bind_data(self, data, _id, n):
|
||
|
if id == 0:
|
||
|
data = data.filter(parent__isnull=True)
|
||
|
else:
|
||
|
data = data.filter(parent=_id)
|
||
|
for d in data:
|
||
|
print(d)
|
||
|
self.alist[d.id] = self.space_length(n) + d.name
|
||
|
self.bind_data(d, d.id, n + 2)
|
||
|
return self.alist
|
||
|
|
||
|
def space_length(self, i):
|
||
|
space = ''
|
||
|
for j in range(1, i):
|
||
|
space += " "
|
||
|
return space + "|--"
|
||
|
|
||
|
def get(self, request):
|
||
|
form_obj = GoodsCateForm()
|
||
|
return render(request, 'goods/cate_add.html', {'form_obj': form_obj})
|
||
|
|
||
|
def post(self, request):
|
||
|
form_obj = GoodsCateForm(request.POST, request.FILES)
|
||
|
if form_obj.is_valid():
|
||
|
name = request.POST.get('name', '')
|
||
|
cates = GoodsCategory.objects.filter(name=name)
|
||
|
if cates:
|
||
|
info = '分类已经存在'
|
||
|
else:
|
||
|
cate = GoodsCategory.objects.create(**form_obj.cleaned_data)
|
||
|
return redirect('cate_index')
|
||
|
return render(request, 'goods/cate_add.html', {'form_obj': form_obj, 'info': info})
|
||
|
else:
|
||
|
errors = form_obj.errors
|
||
|
print(errors)
|
||
|
return render(request, 'goods/cate_add.html', {'form_obj': form_obj, 'info': errors})
|
||
|
|
||
|
|
||
|
class GoodView(View):
|
||
|
def __init__(self):
|
||
|
self.alist = {}
|
||
|
|
||
|
def binddata(self, datas, id, n):
|
||
|
if id == 0:
|
||
|
datas = GoodsCategory.objects.filter(parent__isnull=True)
|
||
|
else:
|
||
|
datas = GoodsCategory.objects.filter(parent_id=id)
|
||
|
for data in datas:
|
||
|
self.alist[data.id] = self.spacelength(n) + data.name
|
||
|
self.binddata(datas, data.id, n + 2)
|
||
|
return self.alist
|
||
|
|
||
|
def spacelength(self, i):
|
||
|
space = ''
|
||
|
for j in range(1, i):
|
||
|
space += " "
|
||
|
return space + "|--"
|
||
|
|
||
|
def get(self, request):
|
||
|
cates_all = GoodsCategory.objects.all()
|
||
|
cates = self.binddata(cates_all, 0, 1)
|
||
|
print(cates)
|
||
|
return render(request, 'goods/goods_index.html', {'cates': cates})
|
||
|
|
||
|
def post(self, request):
|
||
|
pass
|
||
|
|
||
|
|
||
|
class GoodsAddView(View):
|
||
|
def __init__(self):
|
||
|
self.alist = {}
|
||
|
|
||
|
def binddata(self, datas, id, n):
|
||
|
if id == 0:
|
||
|
datas = GoodsCategory.objects.filter(parent__isnull=True)
|
||
|
else:
|
||
|
datas = GoodsCategory.objects.filter(parent_id=id)
|
||
|
for data in datas:
|
||
|
self.alist[data.id] = self.spacelength(n) + data.name
|
||
|
self.binddata(datas, data.id, n + 2)
|
||
|
return self.alist
|
||
|
|
||
|
def spacelength(self, i):
|
||
|
space = ''
|
||
|
for j in range(1, i):
|
||
|
space += " "
|
||
|
return space + "|--"
|
||
|
|
||
|
def get(self, request):
|
||
|
cates_all = GoodsCategory.objects.all()
|
||
|
cates = self.binddata(cates_all, 0, 1)
|
||
|
return render(request, 'goods/goods_add.html', {'cates': cates})
|
||
|
|
||
|
def post(self, request):
|
||
|
good_dict = dict()
|
||
|
good_dict['name'] = request.POST.get('name', '')
|
||
|
cate_id = request.POST.get('parent_id', '')
|
||
|
if cate_id:
|
||
|
good_dict['category'] = GoodsCategory.objects.filter(id=cate_id)
|
||
|
good_dict['market_price'] = request.POST.get('market_price', '0')
|
||
|
good_dict['price'] = request.POST.get('price', '0')
|
||
|
good_dict['goods_desc'] = request.POST.get('goods_desc', '')
|
||
|
good_dict['main_img'] = request.POST.get('main_img', '')
|
||
|
message = '字段需要填写'
|
||
|
if not good_dict['name']:
|
||
|
message = '请输入姓名'
|
||
|
r = Goods.objects.create(**good_dict)
|
||
|
print(r)
|
||
|
return redirect(reverse('good_index'))
|
||
|
|
||
|
|
||
|
def ajax_goods(request):
|
||
|
cate_id = request.POST.get('cate_id', '')
|
||
|
goodname = request.POST.get('goodname', '')
|
||
|
status = request.POST.get('status')
|
||
|
search_dict = dict()
|
||
|
if cate_id:
|
||
|
search_dict['category'] = cate_id
|
||
|
if goodname:
|
||
|
search_dict['name__contains'] = goodname
|
||
|
if status:
|
||
|
search_dict['status'] = status
|
||
|
page_size = 2
|
||
|
page = int(request.GET['page'])
|
||
|
total = Goods.objects.filter(**search_dict).count()
|
||
|
goods = Goods.objects.filter(**search_dict).order_by('-id')[(page - 1) * page_size: page * page_size]
|
||
|
rows = []
|
||
|
datas = {'total': total, 'row': rows}
|
||
|
for good in goods:
|
||
|
print(good.category.name)
|
||
|
rows.append({
|
||
|
'id': good.id,
|
||
|
'name': good.name,
|
||
|
'market_price': good.market_price,
|
||
|
'price': good.price,
|
||
|
'category_id': good.category.name,
|
||
|
'click_num': good.click_num,
|
||
|
'amount': good.amount,
|
||
|
})
|
||
|
return JsonResponse(datas, safe=False, json_dumps_params={'ensure_ascii': False, 'indent': 4})
|