当前位置: 首页 > news >正文

【Django】网上蛋糕商城后台-类目管理

1.类目管理列表实现

当管理员进入后台管理后,点击类目管理,向服务器发出请求

path('admin/type_list/',viewsAdmin.type_list),
# 处理商品分类管理列表请求
def type_list(request):# 读取分页页码try:ym = request.GET["ym"]except:ym = 1# 查询所有商品分类types = Type.objects.all().order_by("id").values()# 将该分类的商品信息进行分页处理,每页显示5条记录pag = paginator.Paginator(types, 10)# 根据当前页码获取当前分页信息pageInfo = pag.get_page(ym)# 获取当前页的商品列表信息types = pageInfo.object_list# 获取总页码数yms = pag.page_rangereturn render(request, "adminTemp/type_list.html",{"types": types, "page": pageInfo, "yms": yms})
<!DOCTYPE html>
<html>
<head><title>类目列表</title>{% load static %}<meta charset="utf-8"/><link rel="stylesheet" href="{% static 'css/bootstrap.css' %}"/><link rel="stylesheet" href="{% static 'css/page.css' %}"/>
</head>
<body>
<div class="container-fluid">{% include "adminTemp/header.html" %}<br><div><form class="form-inline" method="post" action="/admin/type_add/">{% csrf_token %}<input type="text" class="form-control" id="input_name" name="name" placeholder="输入类目名称" required="required"style="width: 500px"><input type="submit" class="btn btn-warning" value="添加类目"/></form></div><br/>{% if msg %}<div class="alert alert-success">{{ msg }}</div>{% endif %}{% if failMsg %}<div class="alert alert-danger">{{ failMsg }}</div>{% endif %}<br><table class="table table-bordered table-hover"><tr><th width="5%">ID</th><th width="10%">名称</th><th width="10%">操作</th></tr>{% for t in types %}<tr><td><p>{{ t.id  }}</p></td><td><p>{{ t.name  }}</p></td><td><a class="btn btn-primary" href="/admin/type_edit/?id={{ t.id  }}&name={{ t.name  }}">修改</a><a class="btn btn-danger" href="/admin/type_delete/?id={{ t.id  }}">删除</a></td></tr>{% endfor %}</table>
<!-- 显示页码导航栏 --><div id="nav" align="center"><!-- 上一页 --><!-- 判断当前页是否有上一页,如果有上一页则显示上一页的按钮,否则就不显示上一页 -->{% if page.has_previous %}<a href="/admin/type_list/?ym={{ page.previous_page_number }}" class="up_page">上一页</a>{% endif %}<!-- 页码 -->{% for ym in yms %}{% if page.number == ym %}<a href="/admin/type_list/?ym={{ ym }}" class="p_page c_page">{{ ym }}</a>{% else %}<a href="/admin/type_list/?ym={{ ym }}" class="p_page">{{ ym }}</a>{% endif %}{% endfor %}<!-- 下一页 -->{% if page.has_next %}<a href="/admin/type_list/?ym={{ page.next_page_number }}" class="do_page">下一页</a>{% endif %}</div><br>
</div>
</body>
</html>

2.添加类目功能

当管理员需要添加分类时,点击添加类目按钮,向服务器发送请求,将新的分类添加至数据库

path('admin/type_add/',viewsAdmin.type_add),
# 添加分类请求
def type_add(request):name = request.POST["name"]Type.objects.create(name=name)return redirect(type_list)

3.修改类目功能

当管理员需要修改分类时,点击修改按钮,跳转至修改页面

path('admin/type_edit/',viewsAdmin.type_edit),
# 修改分类请求
def type_edit(request):id = request.GET["id"]name = request.GET["name"]return render(request, "adminTemp/type_edit.html", {"id": id, "name": name})
<!DOCTYPE html>
<html>
<head><title>类目编辑</title>{% load static %}<meta charset="utf-8"/><link rel="stylesheet" href="{% static 'css/bootstrap.css' %}"/>
</head>
<body>
<div class="container-fluid">{% include "adminTemp/header.html" %}<br><br><form class="form-horizontal" action="/admin/edit/" method="post">{% csrf_token %}<input type="hidden" name="id" value="{{ id }} "><div class="form-group"><label for="input_name" class="col-sm-1 control-label">类目名称</label><div class="col-sm-6"><input type="text" class="form-control" id="input_name" name="name" value="{{ name }}" required="required"></div></div><div class="form-group"><div class="col-sm-offset-1 col-sm-10"><button type="submit" class="btn btn-success">提交修改</button></div></div></form><span style="color:red;"></span></div>
</body>
</html>

当管理员更新分类内容后,点击提交修改按钮

path('admin/edit/',viewsAdmin.edit),
# 完成修改分类请求
def edit(request):id=request.POST["id"]name=request.POST["name"]type=Type.objects.filter(id=id)type.update(name=name)return redirect(type_list)

4.删除类目功能

当管理员删除某一个分类时,点击删除按钮

path('admin/type_delete/',viewsAdmin.type_delete),
# 删除分类请求
def type_delete(request):id=request.GET["id"]type=Type.objects.get(id=id)type.delete()return redirect(type_list)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • huawei USG6001v1学习---信息安全概念
  • 前端使用webSocket与后台建立连接并进行心跳监测机制
  • AWS基础知识
  • 专业PDF编辑工具:Acrobat Pro DC 2024.002.20933绿色版,提升你的工作效率!
  • WPF/C#:实现导航功能
  • 【go】Excelize处理excel表 带合并单元格、自动换行与固定列宽的文件导出
  • JCR一区级 | Matlab实现PSO-Transformer-LSTM多变量回归预测
  • PWM再理解(1)
  • 【Node.js】初识 Node.js
  • CentOS 8中 更新或下载时报错:为仓库 ‘appstream‘ 下载元数据失败 : Cannot prepare internal mirrorlist
  • 彻底解决idea的编解码问题
  • c# .net core中间件,生命周期
  • 物联网实训室的核心功能有哪些?
  • WebPack5.0 快速入门
  • 什么是diff算法?
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 4个实用的微服务测试策略
  • Apache Pulsar 2.1 重磅发布
  • go语言学习初探(一)
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • java 多线程基础, 我觉得还是有必要看看的
  • Java,console输出实时的转向GUI textbox
  • java中具有继承关系的类及其对象初始化顺序
  • JS实现简单的MVC模式开发小游戏
  • PHP的类修饰符与访问修饰符
  • python3 使用 asyncio 代替线程
  • TCP拥塞控制
  • vuex 学习笔记 01
  • 测试如何在敏捷团队中工作?
  • 从0实现一个tiny react(三)生命周期
  • 缓存与缓冲
  • 力扣(LeetCode)21
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 山寨一个 Promise
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 网络应用优化——时延与带宽
  • 我与Jetbrains的这些年
  • 我这样减少了26.5M Java内存!
  • 想写好前端,先练好内功
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 用简单代码看卷积组块发展
  • 再谈express与koa的对比
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #pragma data_seg 共享数据区(转)
  • #VERDI# 关于如何查看FSM状态机的方法
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)svelte 教程:hello world
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (SERIES12)DM性能优化
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449