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

1.类目管理列表实现

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

python 复制代码
path('admin/type_list/',viewsAdmin.type_list),
python 复制代码
# 处理商品分类管理列表请求
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})
html 复制代码
<!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.添加类目功能

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

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

3.修改类目功能

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

python 复制代码
path('admin/type_edit/',viewsAdmin.type_edit),
python 复制代码
# 修改分类请求
def type_edit(request):
    id = request.GET["id"]
    name = request.GET["name"]
    return render(request, "adminTemp/type_edit.html", {"id": id, "name": name})
html 复制代码
<!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>

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

python 复制代码
path('admin/edit/',viewsAdmin.edit),
python 复制代码
# 完成修改分类请求
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.删除类目功能

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

python 复制代码
path('admin/type_delete/',viewsAdmin.type_delete),
python 复制代码
# 删除分类请求
def type_delete(request):
    id=request.GET["id"]
    type=Type.objects.get(id=id)
    type.delete()
    return redirect(type_list)
相关推荐
长和信泰光伏储能14 分钟前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂39 分钟前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study1 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境2 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境2 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1232 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy12393102163 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb003 小时前
一个项目带你入门AI应用开发01
python
0566463 小时前
Python康复训练——常用标准库
开发语言·python·学习
昆曲之源_娄江河畔3 小时前
Python如何安装flask, pymssql
开发语言·python·flask·pymssql