部门管理(体验,最原始方法来做,Django+mysql)

news/2025/2/15 18:23:59/

本人初学,写完代码在此记录和复盘 

在创建和注册完APP之后(我的命名是employees),编写models.py文件创建表

 手动插入了几条数据

 

1.部门查询

urls.py和views.py在编写之前,都要注意导入对应的库

urls.py:from employees import views    (用于导入视图函数)

views.py:from employees import models    (用于导入表)

python">def depart_list(request):# 从数据库中获取所有部门信息,返回一个查询集queryset = models.Department.objects.all()# 渲染 'depart_list.html' 模板,传递查询集数据到模板中return render(request, 'depart_list.html', {"queryset": queryset})

在templates文件夹中创建对应的html文件 

depart_list.html

{% load static %}<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins/bootstrap-5.3.3/css/bootstrap.css' %}"><link rel="stylesheet" href="{% static 'plugins/font-awesome-4.7.0/css/font-awesome.css' %}"><style>.c1{margin-top: 20px;margin-bottom: 20px;}</style></head>
<body><nav class="navbar navbar-expand-lg bg-light"><div class="container"><a class="navbar-brand" href="#">部门管理系统</a><button class="navbar-toggler" type="button" data-bs-toggle="collapse"data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link active" aria-current="page" href="/depart/list/">部门首页</a></li><li class="nav-item"><a class="nav-link" href="/depart/add">部门管理</a></li><form class="d-flex"><input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"><button class="btn btn-outline-success" type="submit">Search</button></form></ul></div><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link active" aria-current="page" href="#">登录</a></li><li class="nav-item"><a class="nav-link" href="#">注册</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" id="log" role="button"data-bs-toggle="dropdown" aria-expanded="false">豆腐乳</a><ul class="dropdown-menu" aria-labelledby="navbarDropdown"><li><a class="dropdown-item" href="#">个人资料</a></li><li><a class="dropdown-item" href="#">我的账户</a></li><li><a class="dropdown-item" href="#">修改密码</a></li><li><hr class="dropdown-divider"></li><li><a class="dropdown-item" href="#">注销</a></li></ul></li></ul></div>
</nav><div><div class="container"><div class="c1"><a class="btn btn-success" href="/depart/add">新建部门</a></div><div class="card c1"><div class="card-header"><i class="fa fa-list" aria-hidden="true"></i>部门列表</div><div class="card-body p-0"><div class="table-responsive"><table class="table table-striped table-bordered table-hover mb-0"><thead><tr><th>ID</th><th>名称</th><th>操作</th></tr></thead><tbody>{% for obj in queryset %}<tr><th scope="row">{{ obj.id }}</th><td>{{ obj.title }}</td><td><a class="btn btn-primary btn-xs" href="/depart/{{ obj.id }}/edit/">编辑</a><a class="btn btn-danger btn-xs" href="/depart/delete/?nid={{ obj.id }}">删除</a></td></tr>{% endfor %}</tbody></table></div></div></div><nav aria-label="Page navigation example"><ul class="pagination"><li class="page-item"><a class="page-link" href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li><li class="page-item"><a class="page-link" href="#">1</a></li><li class="page-item"><a class="page-link" href="#">2</a></li><li class="page-item"><a class="page-link" href="#">3</a></li><li class="page-item"><a class="page-link" href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li></ul></nav></div>
</div><script src="{% static 'plugins/bootstrap-5.3.3/js/bootstrap.bundle.min.js' %}"></script></body>
</html>
  1. 视图函数 depart_list
    查询数据库中的部门表(Department),将所有部门数据传递给模板 depart_list.html

  2. 模板循环
    遍历 queryset 中的每个部门对象,生成表格行,显示部门 ID、名称,并提供“编辑”和“删除”操作链接。

    • 编辑:跳转至 /depart/{id}/edit/

    • 删除:跳转至 /depart/delete/?nid={id}

2.部门增加

python">def depart_add(request):# 处理 GET 请求:返回添加部门的页面if request.method == 'GET':return render(request, 'depart_add.html')# 处理 POST 请求:获取表单中的部门名称并保存到数据库title = request.POST.get("title")  # 从 POST 请求中获取部门名称models.Department.objects.create(title=title)  # 创建新部门# 添加成功后,重定向到部门列表页面return redirect("/depart/list")

depart_list.html

{% load static %}<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins/bootstrap-5.3.3/css/bootstrap.css' %}"><link rel="stylesheet" href="{% static 'plugins/font-awesome-4.7.0/css/font-awesome.css' %}"><style>.c1{margin-top: 20px;margin-bottom: 20px;}</style></head>
<body><nav class="navbar navbar-expand-lg bg-light"><div class="container"><a class="navbar-brand" href="#">部门管理系统</a><button class="navbar-toggler" type="button" data-bs-toggle="collapse"data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link active" aria-current="page" href="/depart/list/">部门首页</a></li><li class="nav-item"><a class="nav-link" href="/depart/add">部门管理</a></li><form class="d-flex"><input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"><button class="btn btn-outline-success" type="submit">Search</button></form></ul></div><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link active" aria-current="page" href="#">登录</a></li><li class="nav-item"><a class="nav-link" href="#">注册</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" id="log" role="button"data-bs-toggle="dropdown" aria-expanded="false">豆腐乳</a><ul class="dropdown-menu" aria-labelledby="navbarDropdown"><li><a class="dropdown-item" href="#">个人资料</a></li><li><a class="dropdown-item" href="#">我的账户</a></li><li><a class="dropdown-item" href="#">修改密码</a></li><li><hr class="dropdown-divider"></li><li><a class="dropdown-item" href="#">注销</a></li></ul></li></ul></div>
</nav><div><div class="container"><div class="c1"><a class="btn btn-success" href="/depart/add">新建部门</a></div><div class="card c1"><div class="card-header">新建部门</div><div class="card-body"><form method="post">{% csrf_token %}<div class="mb-3"><label for="inputtitle" class="form-label">标题</label><input type="text" class="form-control" id="inputtitle" placeholder="标题" name="title"></div><button type="submit" class="btn btn-primary">提交</button></form></div></div></div>
</div><script src="{% static 'plugins/bootstrap-5.3.3/js/bootstrap.bundle.min.js' %}"></script></body>
</html>

运行

 

3.部门删除

python">def depart_delete(request):# 获取请求中传递的 'nid' 参数,即要删除的部门 IDnid = request.GET.get("nid")# 根据 'nid' 参数过滤部门对象并删除models.Department.objects.filter(id=nid).delete()# 删除完成后,重定向回部门列表页面return redirect("/depart/list")

  depart_delete 函数效果:运行/depart/delete/?nid=1,就会删除id为1的数据

当用户点击“删除”按钮时,会触发 depart_delete 函数,该函数根据部门的 ID 删除对应的部门数据,并重定向回部门列表页面。

运行

 

 

4.部门修改

<int:nid>:这是一个捕获组,它告诉 Django 该部分的路径将匹配一个整数,并将这个整数作为参数传递给视图函数。在这里,nid 是变量名,表示部门的 ID。 

python">def depart_edit(request, nid):# 如果请求方法是 GET(即用户访问编辑页面),获取对应部门的信息if request.method == 'GET':# 根据部门 ID 获取部门对象,并将其传递给模板row_object = models.Department.objects.filter(id=nid).first()return render(request, 'depart_edit.html', {"row_object": row_object})# 如果请求方法是 POST(即用户提交表单),更新部门信息title = request.POST.get("title")# 更新数据库中对应部门的标题models.Department.objects.filter(id=nid).update(title=title)# 更新完成后,重定向到部门列表页面return redirect("/depart/list")

当用户访问 /depart/<nid>/edit/ URL 时,depart_edit 函数会根据部门 ID (nid) 获取该部门的现有信息并显示在表单中,用户可以修改部门名称并提交表单。提交表单后,depart_edit 函数会更新数据库中对应部门的标题,并将用户重定向回部门列表页面。

depart_edit.py

{% load static %}<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins/bootstrap-5.3.3/css/bootstrap.css' %}"><link rel="stylesheet" href="{% static 'plugins/font-awesome-4.7.0/css/font-awesome.css' %}"><style>.c1{margin-top: 20px;margin-bottom: 20px;}</style></head>
<body><nav class="navbar navbar-expand-lg bg-light"><div class="container"><a class="navbar-brand" href="#">部门管理系统</a><button class="navbar-toggler" type="button" data-bs-toggle="collapse"data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button><div class="collapse navbar-collapse" id="navbarSupportedContent"><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link active" aria-current="page" href="/depart/list/">部门首页</a></li><li class="nav-item"><a class="nav-link" href="/depart/add">部门管理</a></li><form class="d-flex"><input class="form-control me-2" type="search" placeholder="Search" aria-label="Search"><button class="btn btn-outline-success" type="submit">Search</button></form></ul></div><ul class="navbar-nav me-auto mb-2 mb-lg-0"><li class="nav-item"><a class="nav-link active" aria-current="page" href="#">登录</a></li><li class="nav-item"><a class="nav-link" href="#">注册</a></li><li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" id="log" role="button"data-bs-toggle="dropdown" aria-expanded="false">豆腐乳</a><ul class="dropdown-menu" aria-labelledby="navbarDropdown"><li><a class="dropdown-item" href="#">个人资料</a></li><li><a class="dropdown-item" href="#">我的账户</a></li><li><a class="dropdown-item" href="#">修改密码</a></li><li><hr class="dropdown-divider"></li><li><a class="dropdown-item" href="#">注销</a></li></ul></li></ul></div>
</nav><div><div class="container"><div class="card c1"><div class="card-header">修改部门</div><div class="card-body"><form method="post">{% csrf_token %}<div class="mb-3"><label for="inputtitle" class="form-label">标题</label><input type="text" class="form-control" id="inputtitle" placeholder="标题" name="title" value="{{ row_object.title }}"/></div><button type="submit" class="btn btn-primary">提交</button></form></div></div></div>
</div><script src="{% static 'plugins/bootstrap-5.3.3/js/bootstrap.bundle.min.js' %}"></script></body>
</html>

运行

改成“媒体” 

 

 

 学习:【最新Python的web开发全家桶(django+前端+数据库)-哔哩哔哩】 https://b23.tv/O0w3SND


http://www.ppmy.cn/news/1572312.html

相关文章

【实测】用全志A733平板搭建一个端侧Deepseek算力平台

随着DeepSeek 的蒸馏技术的横空出世&#xff0c;端侧 SoC 芯片上运行大模型成为可能。那么端侧芯片跑大模型的效果如何呢&#xff1f;本文将在全志 A733 芯片平台上部署一个 DeepSeek-R1:1.5B 模型&#xff0c;并进行实测效果展示。 端侧平台环境 设备&#xff1a;全志A733平板…

Spring基于文心一言API使用的大模型

有时做项目我们可能会遇到要在项目中对接AI大模型 本篇文章是对使用文心一言大模型的使用总结 前置任务 在百度智能云开放平台中注册成为开发者 百度智能云开放平台 进入百度智能云官网进行登录&#xff0c;点击立即体验 点击千帆大模型平台 向下滑动&#xff0c;进入到模型…

深度学习与增强现实的完美邂逅:开启未来智能交互的新篇章

深度学习与增强现实的完美邂逅:开启未来智能交互的新篇章 近年来,随着深度学习和增强现实(AR)技术的飞速发展,二者的结合应用正逐步改变着我们的生活方式。从智能驾驶到医疗诊断,再到游戏娱乐,深度学习为增强现实提供了强大的算法支持,而增强现实则为深度学习提供了丰…

Spring Boot整合协同过滤算法,实现个性化推荐

1. 引言 在这篇文章中&#xff0c;我们将展示如何使用 Spring Boot 框架与 协同过滤算法 相结合来构建一个简单的推荐系统。推荐系统广泛应用于电商、电影推荐、社交平台等领域。协同过滤算法通过分析用户行为&#xff0c;找出相似的用户或者物品&#xff0c;从而实现个性化推荐…

美术教程2025

动画 必看 动画d【Unity初学者教程】如何制作 2D 游戏动画_哔哩哔哩_bilibili 如何在Unity中制作2D游戏动画 - 新手教程 - Blackthornprod_新手教程 可不看序列帧 【简明UNITY教程】2D游戏 动画制作实例详解_哔哩哔哩_bilibili unityspine 【Unity2D游戏开发教程】2D自定…

Linux性能分析工具Trace使用

Linux Trace是⼀种⽤于抓取和分析系统运⾏时信息的⼯具。允许开发⼈员跟踪和分析系统的各种活动,以便深⼊了解系统的性能、⾏为和故障。下⾯是关于Linux Trace数据抓取的说明: 1. 数据抓取范围:Linux Trace可以抓取各种级别的数据,包括系统级别、进程级别和内核级别的数据。…

第一章:Matlab 基础入门

第一章&#xff1a;Matlab 基础入门 1.1 基本数据类型 MATLAB 支持多种数据类型&#xff0c;包括数值型、字符型、逻辑型等。了解这些数据类型是使用 MATLAB 进行编程的基础。 1.1.1 数值型数据 整数: 表示整数值&#xff0c;例如 1, -5, 100 等。浮点数: 表示带有小数部分…

(定时器,绘制事件,qt简单服务器的搭建)2025.2.11

作业 笔记&#xff08;复习补充&#xff09; 1> 制作一个闹钟软件 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //按钮类 #include <QTimer> //定时器类 #include <QTime> //…