【Django】网上蛋糕商城后台-商品管理
1.商品管理功能
当管理员点击商品管理时,发送服务器请求
path('admin/goods_list/', viewsAdmin.goods_list),
# 处理商品列表请求
def goods_list(request):
try:
type = request.GET["type"]
except:
type = 0
try:
ym = request.GET["ym"]
except:
ym = 1
if int(type) == 0:
goodsList = Goods.objects.all().order_by("-id").values()
for goods in goodsList:
typeName = Type.objects.get(id=goods["type_id"]).name
types = Recommend.objects.filter(goods_id=goods["id"]).values_list("type")
if (1,) in types:
goods["isScroll"] = True
if (2,) in types:
goods["isHot"] = True
if (3,) in types:
goods["isNew"] = True
goods["typeName"] = typeName
else:
recommends = Recommend.objects.filter(type=type).order_by("-goods_id")
goodsList = []
for r in recommends:
# 根据推荐栏类型查询商品信息,将查询的对象转换成字典
goods = Goods.objects.get(id=r.goods_id).__dict__
# 根据商品id查询该商品添加在哪些推荐栏中
types = Recommend.objects.filter(goods_id=r.goods_id).values_list("type")
if (1,) in types:
goods["isScroll"] = True
if (2,) in types:
goods["isHot"] = True
if (3,) in types:
goods["isNew"] = True
# 根据商品中的分类id查询分类名称
typeName = Type.objects.get(id=goods["type_id"])
goods["typeName"] = typeName.name
goodsList.append(goods)
# 将该分类的商品信息进行分页处理,每页显示6条记录
pag = paginator.Paginator(goodsList, 6)
# 根据当前页码获取当前分页信息
pageInfo = pag.get_page(ym)
# 获取当前页的商品列表信息
goodsList = pageInfo.object_list
# 获取总页码数
yms = pag.page_range
return render(request, "adminTemp/goods_list.html",
{"goodsList": goodsList, "page": pageInfo, "yms": yms, "type": type})
商品列表
{% load static %}
| ID | 图片 | 名称 | 介绍 | 价格 | 类目 | 操作 |
|---|---|---|---|---|---|---|
{{ g.id }} |
{ g.id }}" target="_blank">{{ g.name }} |
{{ g.intro }} |
{{ g.price }} |
{{ g.typeName }} |
{% if g.isScroll %} { g.id }}&method=remove&typeTarget=1">移出条幅 {% endif %} {% if not g.isScroll %} { g.id }}&method=add&typeTarget=1">加入条幅 {% endif %} {% if g.isHot %} { g.id }}&method=remove&typeTarget=2">移出热销 {% endif %} {% if not g.isHot %} { g.id }}&method=add&typeTarget=2">加入热销 {% endif %} {% if g.isNew %} { g.id }}&method=remove&typeTarget=3">移出新品 {% endif %} {% if not g.isNew %} { g.id }}&method=add&typeTarget=3">加入新品 {% endif %} { g.id }}&ym={{ page.number }}">修改 { g.id }}&ym={{ page.number }}">删除 |
{% if page.has_previous %} { page.previous_page_number }}&type={{ type }}" >上一页 {% endif %} {% for ym in yms %} {% if page.number == ym %} { ym }}&type={{ type }}" >{{ ym }} {% else %} { ym }}&type={{ type }}" >{{ ym }} {% endif %} {% endfor %} {% if page.has_next %} { page.next_page_number }}&type={{ type }}" >下一页 {% endif %}
2.加入或移除推荐栏功能
选择某个商品,点击加入条幅,移除条幅,加入热销,移除热销,加入新品,移除新品按钮时,触发请求事件,传递不同参数信息给服务器
path('admin/goods_recommend/',viewsAdmin.goods_recommend),
# 处理商品的推荐栏请求
def goods_recommend(request):
id = request.GET["id"]
method = request.GET["method"]
typeTarget = request.GET["typeTarget"]
if "add" == method:
# 添加至推荐栏
Recommend.objects.create(goods_id=id, type=typeTarget)
elif "remove" == method:
# 从推荐栏中移除
r = Recommend.objects.get(goods_id=id, type=typeTarget)
r.delete()
# 刷新商品管理列表页面
return redirect(goods_list)
3.添加商品功能
当管理员点击添加商品按钮,触发请求事件
path('admin/goods_add/', viewsAdmin.goods_add),
# 处理添加商品页面的跳转请求
def goods_add(request):
types = Type.objects.all()
return render(request, "adminTemp/goods_add.html", {"typeList": types})
商品添加
{% load static %}
{% csrf_token %}
名称
价格
介绍
库存
封面图片
推荐尺寸: 500 * 500
详情图片1
推荐尺寸: 500 * 500
详情图片2
推荐尺寸: 500 * 500
类目
{% for t in typeList %}

