# Create your views here.
from django.views import View
from goosapp.models import Category, Goods
from django.core.paginator import Paginator
class IndexView(View):
def get(self, request, categoryid=2, num=1):
categoryid = int(categoryid)
num = int(num)
# 获得所有商品的类别信息
categoryList = Category.objects.all().order_by('id')
# 获得某个类别下的所有商品信息
goosList = Goods.objects.filter(category_id=categoryid).order_by('id')
paginatorObj = Paginator(object_list=goosList, per_page=8)
page_goods_obj = paginatorObj.get_page(num)
# 分页页码
start = num - math.ceil(10 / 2)
if start < 1:
start = 1
end = start + 9
if end > paginatorObj.num_pages:
end = paginatorObj.num_pages
if end < 10:
start = 1
else:
start = end - 9
page_list = range(start, end + 1)
return render(request, 'index.html',
{'categroyList': categoryList, 'goodsList': page_goods_obj,
'categoryid': categoryid, 'page_list': page_list})
def commend(func):
def _wrapper(detailView, request, good_id, *args, **kwargs):
c_goodsid = request.COOKIES.get('c_goodsid', '')
# 存放用户访问过的商品列表
goodsIdList = [id for id in c_goodsid.split() if id.strip()]
# 存放用户访问的商品对象列表
goodsObList = [Goods.objects.get(id=gid) for gid in goodsIdList if gid != good_id and Goods.objects.get(id=gid).category_id == Goods.objects.get(id=good_id).category_id][:4]
if good_id in goodsIdList:
goodsIdList.remove(good_id)
goodsIdList.insert(0, good_id)
else:
goodsIdList.insert(0, good_id)
response = func(detailView, request, good_id, recommend_list=goodsObList, *args, **kwargs)
response.set_cookie('c_goodsid', ' '.join(goodsIdList), max_age=3 * 24 * 60 * 60)
return response
return _wrapper
class DetailView(View):
@commend
def get(self, request, good_id, recommend_list=[]):
goodid = int(good_id)
try:
goods = Goods.objects.get(id=goodid)
return render(request, 'detail.html', {'goods': goods, 'recommendli': recommend_list})
except Goods.DoesNotExist:
return Http404
老师,这个错误,怎么解决