from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
from django.views import View
import math
from goods_app.models import *
from django.core.paginator import Paginator
class IndexView(View):
"""显示商品类别和商品列表的视图类"""
def get(self,request,cid=2,num=1):
# 当前类别
currentCid = int(cid)
# 当前页
num = int(num)
#1. 获取所有的商品类别信息
categoryList = Category.objects.all().order_by('id')
#2. 获取当前类别下所有商品信息
goodsList = Goods.objects.filter(category_id=cid)
#3. 添加分页功能
# 创建分页器对象
pageinator = Paginator(object_list=goodsList,per_page=8)
# 获取当前页的数据
page_obj = pageinator.page(num)
# 获取每一页的页码数列表[begin,end]
begin = num-int(math.ceil(10/2))
if begin < 1:
begin = 1
end = begin + 9
if end > pageinator.num_pages:
end = pageinator.num_pages
if end < 10:
begin = 1
else:
begin = end - 9
numList = range(begin, end+1)
return render(request,'goods_app/index.html',{'categoryList':categoryList,'goodsList':page_obj,'currentCid':currentCid,'numList':numList,'currentNum':num})
def recommend(func):
def _wrapper(request,goodsid,*args,**kwargs):
# 从cookie中获取用户访问的goodid字符串
c_goodidStr = request.COOKIES.get('recommend','')
# 已经访问过的商品id列表 #专门存放goodsid的列表 ['1','2'] ==> '1 2'
goodsIdList = [gid for gid in c_goodidStr.split() if gid.strip()]
# 已经访问过商品的对象列表
goodsObjectList = [Goods.objects.get(id=ggid) for ggid in goodsIdList if ggid != goodsid and Goods.objects.get(id=ggid).category_id == Goods.objects.get(id=goodsid).category_id][:4]
# 将推荐商品对象列表传递给func函数
response = func(request,goodsid,recommendList=goodsObjectList,*args,**kwargs)
# 判断用户访问的商品是否存在goodIdList列表中
if goodsid in goodsIdList:
goodsIdList.remove(goodsid)
goodsIdList.insert(0,goodsid)
else:
goodsIdList.insert(0, goodsid)
# 将用户每次访问的商品ID存放在cookie中
response.set_cookie('recommend',''.join(goodsIdList),expires_days=3)
return response
return _wrapper
class DetailView(View):
"""商品详情视图类"""
@recommend # 在不改变原来的代码下 新增猜你喜欢功能
def get(self,request,goodsid,recommendList=[]):
goodsid = int(goodsid)
# 根据商品ID获取商品详情信息
try:
goods = Goods.objects.get(id=goodsid)
return render(request,'goods_app/detail.html',{'goods':goods,'recommendList':recommendList})
except Goods.DoesNotExist:
return HttpResponse(status=404)

老师,我这个代码和视频中的一样,报了个错。怎么回事,