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

news2024/9/21 5:48:01

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_range
    return 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1935844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode算法题(链表的中间节点+返回倒数第k个节点+合并两个有序链表)

题目1&#xff1a; 本题力扣链接&#xff1a;https://leetcode.cn/problems/middle-of-the-linked-list/solutions/164351/lian-biao-de-zhong-jian-jie-dian-by-leetcode-solut/ 思路1&#xff1a;单指针法 首先我们对链表进行遍历&#xff0c;记录链表的总长度N&#xff0c;…

Postgresql导入几何数据的几种方式

postgis方式导入 1.直接使用postgis客户端方式导入 首先&#xff0c;电脑要安装postgresql和对应版本的postgis。然后通过postgis客户端软件连接到postgresql数据库。然后导入。具体详细操作如下所示&#xff1a; 第一步&#xff1a;首先要再postgis中创建数据库 Create da…

【Linux取经之路】Linux常见指令

目录 基本指令 常见指令 1&#xff09;ls —— 对于目录&#xff0c;列出该目录下的所有子目录和文件&#xff1b;对于文件&#xff0c;将列出文件名及其他信息 2&#xff09;pwd —— 显示当前所在的目录 ​编辑 3&#xff09;cd —— 切换到指定路径下 4&#xff09;t…

阿里云DSW实例中安装并运行Neo4J

想尝试使用大模型对接Neo4J&#xff0c;在阿里云DSW实例中安装了Neo4J&#xff0c;却无法通过本地浏览器访问在DSW实例中运行的Neo4J。尝试了改neo4j.conf文件&#xff0c;以及添加专用网络的公共IP地址等方法&#xff0c;均没有成功。最后决定直接在服务器的命令行进行各种Cyp…

如何在 Puppeteer 中运行无头浏览器?

什么是无头浏览器&#xff1f; 我们都知道&#xff0c;用户界面&#xff08;UI&#xff09;是任何软件中最重要的部分。因此&#xff0c;“无头浏览器”的“无头”部分意味着它们确实缺少一个关键元素&#xff0c;即图形用户界面&#xff08;GUI&#xff09;。 这意味着浏览器…

unity渲染人物模型透明度问题

问题1&#xff1a;有独立的手和衣服的模型&#xff0c;但最终只渲染出来半透明衣服 问题2&#xff1a;透明度贴图是正确的但显示却不正确 这上面两个模型的问题都是因为人物模型是一个完整的&#xff0c;为啥有些地方可以正常显示&#xff0c;有些地方透明度却有问题。 其中…

AI大模型,程序员的下一个职业春天

前言 在后疫情时代的经济环境中&#xff0c;各行各业的就业形势变得异常严峻&#xff0c;互联网行业尤甚&#xff0c;裁员潮频发&#xff0c;程序员们的未来似乎笼罩在一层不确定的迷雾之中。曾经&#xff0c;程序员这个职业因其高薪而令人艳羡&#xff0c;但背后的艰辛与压力…

【STM32】LED闪烁LED流水灯蜂鸣器(江科大)

LED正极&#xff1a;外部长脚、内部较小 LED负极&#xff1a;外部短脚、内部较大 LED电路 限流电阻&#xff1a;保护LED&#xff0c;调节LED亮度&#xff08;本实验用面包板为了方便&#xff0c;省去了限流电阻&#xff0c;设计电路时要加上&#xff09; 左上图&#xff1a;低…

ubuntu2204配置anacondacuda4090nvidia驱动

背景 某个机房的几台机器前段时间通过dnat暴露至公网后被入侵挖矿&#xff0c;为避免一些安全隐患将这几台机器执行重装系统操作&#xff1b; 这里主要记录配置nvidia驱动及cuda&anaconda。 步骤 大概分为几个步骤 禁用nouveau配置grub显示菜单install nvidia-driveri…

Linux——远程连接服务器

sshd服务端 ssh客户端 ssh 服务配置 #ssh 服务安装包 openssh-server [rootserver1 ~] # vim /etc/ssh/sshd_config 17 . #Port 22 # 监听端口&#xff0c;默认监听 22 端口 【默认可修改】 18 . #AddressFamily any #IPV4 和 IPV6 协议家族用哪个&#xff0c; any 表示二者…

Python莫兰生死抑制放大进化图

&#x1f3af;要点 &#x1f3af;种群离散时间莫兰生死动态图解 | &#x1f3af;良好混合种群的固定概率 | &#x1f3af;数值求解生成埃尔多斯-雷尼图 | &#x1f3af;计算马尔可夫链的转移矩阵概率 | &#x1f3af;出生死亡动态和死亡出生动态概率无向随机图和有向随机图&am…

【数据结构】树和二叉树——Lesson1

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

一个小问题导致,AI大模型集体翻车?

9.11大还是9.9大&#xff1f; 这两天大家都在说ChatGPT大模型翻车了 &#xff01; 这到底是怎么个事儿呢&#xff1f; 原来是最近有人想ChatGPT等大模型提了一个简单的问题&#xff1a; 9.11 大还是 9.9 大&#xff1f; 答案显而易见&#xff0c;然而众多大模型却给出了错误…

基于JAVA+SpringBoot+Vue的oa系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、SpringCloud、Layui、Echarts图表、Nodejs、爬…

【高性能服务器】poll模型

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 poll模型 关于sel…

算法-计数质数

题目&#xff1a; 给定整数 n &#xff0c;返回 所有小于非负整数 n 的质数的数量 。 思路&#xff1a; 使用埃式筛法 当n大于等于2时&#xff0c;如果当前遍历的数 i 是质数&#xff0c;那么从 i*i 开始&#xff0c;直到 n 为止&#xff0c;把 i 的倍数都标记为合数 代码&a…

一个关于STM32的DAC输出的遗忘点

众所周知熟练使用HAL库可以帮你解决不少stm32的开发难题&#xff0c;但是是谁让你陷入了这些难题&#xff0c;别问。 如上图所示&#xff0c;正常初始化这个模块后生成代码如下图所示&#xff1b; * DAC init function */ void MX_DAC_Init(void) {/* USER CODE BEGIN DAC_Ini…

【LabVIEW作业篇 - 3】:数组相加、for循环创建二位数组、数组练习(求最大最小值、平均值、中位数、提取范围内的数据、排序)

文章目录 数组相加for循环实现直接使用加函数 for循环创建二位数组数组练习 数组相加 要求&#xff1a;用两种方法实现两个数组相加 for循环实现 在前面板中分别创建两个数值类型的一维数组&#xff0c;并设置相应的值&#xff0c;然后在程序框图中创建一个for循环&#xff…

数据结构(Java):力扣牛客 二叉树面试OJ题(一)

&#x1f449; ​​​​​​目录 &#x1f448; 1、题一&#xff1a;检查两棵树是否相同 1.1 思路分析 1.2 代码 2、题二&#xff1a;另一棵树的子树 2.1 思路分析 2.2 代码 3、题三&#xff1a;翻转二叉树 3.1 思路分析 3.2 代码 4、题四&#xff1a;判断树是否对称 …

小模型大突破!神经网络透视空间异质性,准确描述复杂地理现象

为推进 AI4S 的普适化&#xff0c;降低学术机构科研成果的传播壁垒&#xff0c;为更多行业学者、科技爱好者及产业单位提供交流平台&#xff0c;HyperAI超神经策划了「Meet AI4S」系列直播栏目&#xff0c; 邀请深耕 AI for Science 领域的科研人员或相关单位&#xff0c;以视频…