【银角大王——Django课程——创建项目+部门表的基本操作】

Django框架员工管理系统——创建项目+部门表管理

    • 员工管理系统
      • 创建项目
        • 命令行的形式创建Django项目——
        • 创建app
        • 注册app——在sttings中的INSTALLED_APPS = [ ]数组中注册
      • 设计表结构(django)
      • 连接数据库——在settings里面改写DATABASES
      • Django命令执行生成数据库
      • 创建static目录和templates目录在app下
      • 部门的管理(最原始的方式)——之后使用Django框架提供的Form和ModelForm组件
        • (1)部门列表页面
        • (2)部门添加页面
        • (3)部门删除
        • (3)部门编辑

员工管理系统

创建项目

命令行的形式创建Django项目——

(1)打开终端,进入想要项目存放位置的目录

F:\python笔记20210604\project_Djangomanagesystem

(2)进入存放目录后,执行命令创建项目

//python安装的路径下的Scripts下的django工具  startproject  项目名称
"F:\python学习\python3.7.2024\Scripts\django-admin.exe" startproject djangoproject_1
创建app

执行命令——cd到项目目录下

python manage.py startapp app01

在这里插入图片描述

注册app——在sttings中的INSTALLED_APPS = [ ]数组中注册

在INSTALLED_APPS数组里编写app01(创建的app的文件名字).apps.App01Config(apps里面的类)
在这里插入图片描述

设计表结构(django)

————————————models.py中编写表


class Department(models.Model):# 部门表title=models.CharField(verbose_name='标题',max_length=32)class UseInfo(models.Model):#员工表name=models.CharField(verbose_name='姓名',max_length=16)password=models.CharField(verbose_name='密码',max_length=64)age=models.IntegerField(verbose_name='年龄')account=models.DecimalField(verbose_name='账户余额',max_digits=10,decimal_places=3,default=0)from_time=models.DateTimeField(verbose_name='入职时间')#添加约束——只能是部门表中已有的部门id#无约束department_id=models.IntegerField(verbose_name='部门ID',)#有约束#1.#-to,与那张表关联#-to_field,表中哪一列关联#2.#django自动,在生成得列后面加一个关联字段名#如depart列,关联id,则生成depart_id#3.# 部门表被删除#3.1 级联删除,设置字段on_delete=models.CASCADE(级联),foreignKey(外键)depart=models.ForeignKey(to="Department",to_fields="id",on_delete=models.CASCADE)#3.2 置空——设置字段null=True,blank=True,on_delete=models.SET_NULL#depart=models.ForeignKey(to="Department",to_fields="id",null=True,blank=True,on_delete=models.SET_NULL)#在django中的约束——和数据库的约束无关,这是框架中的gender_choices=((1,"男"),(2,"女"),)gender=models.SmallIntegerField(verbose_name='性别',choices=gender_choices)

连接数据库——在settings里面改写DATABASES

DATABASES = {'default':{'ENGINE':'django.db.backends.mysql','NAME':'stff_db',#数据库的名字——员工数据库'USER':'root','PASSWORD':'123456','HOST':'localhost', #127.0.0.1'PORT':'3306',}}

在这里插入图片描述

Django命令执行生成数据库

python manage.py makemigrations
python manage.py migrate

查看数据库创建是否成功
在这里插入图片描述
查看数据库中表是否存在
在这里插入图片描述

创建static目录和templates目录在app下

———————将需要的框架都导入进来,或者直接复制之前项目的static文件粘贴也行
在这里插入图片描述

部门的管理(最原始的方式)——之后使用Django框架提供的Form和ModelForm组件

(1)部门列表页面
  1. 在urls.py中添加函数与地址的关系
urlpatterns = [# path('admin/', admin.site.urls),
# 访问网址depart/list/, 就会去执行函数并执行函数,函数在views中path('depart/list/',views.depart_list),]

在这里插入图片描述
2. 编写函数——在view.py中

#部门列表展示
def depart_list(request):#去数据库中获取部门列表#query_list——列表query_list=models.Department.objects.all()return render(request,'depart_list.html',{'query_list':query_list} )

在这里插入图片描述

  1. 在HTML中编写

{% load static %}<!DOCTYPE html><html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
<!--    为啥只能使用这种引用,好无语,配置文件中应该咋改嘞-->
<!--    <link rel="stylesheet" type="text/css" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.css' %}">-->
<!--    <link rel="stylesheet" type="text/css" href="../static/plugins/bootstrap-3.4.1-dist/css/bootstrap.css">-->
<!--    去除圆角样式-->
<!--    <style>-->
<!--        .navbar{ -->
<!--        border-radius:0;-->
<!--        }-->
<!--    </style>--><link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1-dist/css/bootstrap.css'%}">
</head>
<body>
<nav class="navbar navbar-default"><div class="container-fluid"><!-- Brand and toggle get grouped for better mobile display --><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="#">联通用户管理系统</a></div><!-- Collect the nav links, forms, and other content for toggling --><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav"><li class="active"><a href="#">部门管理 <span class="sr-only">(current)</span></a></li><ul class="dropdown-menu"><li><a href="#">Action</a></li><li><a href="#">Another action</a></li><li><a href="#">Something else here</a></li><li role="separator" class="divider"></li><li><a href="#">Separated link</a></li><li role="separator" class="divider"></li><li><a href="#">One more separated link</a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li><a href="#">登录</a></li><li class="dropdown " ><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">庞恬 <span class="caret"></span></a><ul class="dropdown-menu"><li><a href="#">个人资料</a></li><li><a href="#">我的信息</a></li><li role="separator" class="divider"></li><li><a href="#">注销</a></li></ul></li></ul></div></div>
</nav><div><div class="container"><div style="margin-bottom: 10px">
<!--        新建部门按钮--><a class="btn btn-success" href="/depart/add/" ><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>新建部门</a></div><div class="panel panel-default"><!-- Default panel contents --><div class="panel-heading"><span class="glyphicon glyphicon-list" aria-hidden="true"></span>部门列表</div><div class="panel-body"><p>欢迎进入到部门管理页面,请安全操作!</p></div><!-- Table --><table class="table table-bordered"><thead><tr><th>ID</th><th>名称</th><th>操作</th></tr></thead><tbody>
<!--        数据库部门列表循环-->{% for obj in query_list %}<tr><td>{{obj.id}}</td><td>{{obj.title}}</td><td>
<!--                Django框架中传递参数的正则表达式--><a class="btn btn-primary btn-xs"  href="/depart/{{obj.id}}/edit/">编辑</a>
<!--                通过get请求传递参数跳转页面--><a class="btn btn-danger btn-xs" href="/depart/delete/?nid={{obj.id}}" >删除</a></td></tr>{% endfor %}</tbody></table></div></div></div><!--这个不知道会不会有效哦--><script src="{% static 'js/jquery-3.5.1/jquery-3.5.1.min.js' %}"></script><script src="{% static 'plugins/bootstrap-3.4.1-dist/js/bootstrap.js' %}"></script></body>
</html>

在这里插入图片描述

(2)部门添加页面
  1. 在urls.py中编写
urlpatterns = [# path('admin/', admin.site.urls),
# 访问网址depart/list/, 就会去执行函数并执行函数,函数在views中path('depart/add/',views.depart_add),]

在这里插入图片描述
2. 在views.py中编写

#添加部门函数
def depart_add(request):if request.method =="GET":return render(request,'depart_add.html')#接收通过post请求传过来的数据(先不管非法的输入数据)else:title= request.POST.get("title")#保存到数据库models.Department.objects.create(title=title)#重定向回列表页面#记得导入redirect模块return redirect("/depart/list/")
  1. 在HTML中编写
{% load static %}<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1-dist/css/bootstrap.css'%}">
</head>
<body>
<nav class="navbar navbar-default"><div class="container-fluid"><!-- Brand and toggle get grouped for better mobile display --><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="#">联通用户管理系统</a></div><!-- Collect the nav links, forms, and other content for toggling --><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav"><li class="active"><a href="#">部门管理 <span class="sr-only">(current)</span></a></li><ul class="dropdown-menu"><li><a href="#">Action</a></li><li><a href="#">Another action</a></li><li><a href="#">Something else here</a></li><li role="separator" class="divider"></li><li><a href="#">Separated link</a></li><li role="separator" class="divider"></li><li><a href="#">One more separated link</a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li><a href="#">登录</a></li><li class="dropdown " ><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">庞恬 <span class="caret"></span></a><ul class="dropdown-menu"><li><a href="#">个人资料</a></li><li><a href="#">我的信息</a></li><li role="separator" class="divider"></li><li><a href="#">注销</a></li></ul></li></ul></div></div>
</nav><div><div class="container"><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title"> 新建部门 </h3></div><div class="panel-body"><form method="post">
<!--                    隐含参数-->{% csrf_token %}<div class="form-group"><label >部门名称</label><input type="text" class="form-control"  placeholder="部门名称" name="title"></div><button type="submit" class="btn btn-primary">提 交</button></form></div></div></div></div><!--这个不知道会不会有效哦--><script src="{% static 'js/jquery-3.5.1/jquery-3.5.1.min.js' %}"></script><script src="{% static 'plugins/bootstrap-3.4.1-dist/js/bootstrap.js' %}"></script>
</body>
</html>

在这里插入图片描述
请添加图片描述

(3)部门删除
  1. 在urls.py中编写
urlpatterns = [# path('admin/', admin.site.urls),
# 访问网址depart/list/, 就会去执行函数并执行函数,函数在views中path('depart/delete/',views.depart_delete),]

请添加图片描述

  1. 在views.py中编写
#删除部门,通过get请求获取id
def depart_delete(request):#获取nid=request.GET.get('nid')#删除models.Department.objects.filter(id=nid).delete()#跳转回部门listreturn redirect("/depart/list/")
  1. 在HTML中编写

在list列表页面中可以看见——此按钮通过get请求传递参数

 <a class="btn btn-danger btn-xs" href="/depart/delete/?nid={{obj.id}}" >删除</a>

请添加图片描述

(3)部门编辑
  1. 在urls.py中编写
urlpatterns = [# path('admin/', admin.site.urls),
# 访问网址depart/list/, 就会去执行函数并执行函数,函数在views中#正则表达式方式传递参数path('depart/<int:nid>/edit/',views.depart_edit)
]

请添加图片描述

  1. 在views.py中编写
#修改部门
def depart_edit(request,nid):if request.method =="GET":#根据nid,获取数据第一项[obj,]#models.Department.objects.filter(id=nid),这样是获取满足条件的记录,我们应该取第一项,而不是有一个对象的list容器row_object=models.Department.objects.filter(id=nid).first()#通过模板语法传递从数据库拿到的对象,映射到页面中渲染return render(request,'depart_edit.html',{"row_object":row_object})else:# 获取用户提交的信息title=request.POST.get("title")#根据id找到数据库中的数据进行更新models.Department.objects.filter(id=nid).update(title=title)# 跳转回部门listreturn redirect("/depart/list/")
  1. 在HTML中编写
{% load static %}<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1-dist/css/bootstrap.css'%}">
</head>
<body>
<nav class="navbar navbar-default"><div class="container-fluid"><!-- Brand and toggle get grouped for better mobile display --><div class="navbar-header"><button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button><a class="navbar-brand" href="#">联通用户管理系统</a></div><!-- Collect the nav links, forms, and other content for toggling --><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav"><li class="active"><a href="#">部门管理 <span class="sr-only">(current)</span></a></li><ul class="dropdown-menu"><li><a href="#">Action</a></li><li><a href="#">Another action</a></li><li><a href="#">Something else here</a></li><li role="separator" class="divider"></li><li><a href="#">Separated link</a></li><li role="separator" class="divider"></li><li><a href="#">One more separated link</a></li></ul></li></ul><ul class="nav navbar-nav navbar-right"><li><a href="#">登录</a></li><li class="dropdown " ><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">庞恬 <span class="caret"></span></a><ul class="dropdown-menu"><li><a href="#">个人资料</a></li><li><a href="#">我的信息</a></li><li role="separator" class="divider"></li><li><a href="#">注销</a></li></ul></li></ul></div></div>
</nav><div><div class="container"><div class="panel panel-default"><div class="panel-heading"><h3 class="panel-title"> 编辑部门 </h3></div><div class="panel-body"><form method="post">
<!--                    隐含参数-->{% csrf_token %}<div class="form-group"><label >标题</label><input type="text" class="form-control"  placeholder="标题" name="title" value="{{row_object.title}}"></div><button type="submit" class="btn btn-primary">提 交</button></form></div></div></div>
</div><!--这个不知道会不会有效哦--><script src="{% static 'js/jquery-3.5.1/jquery-3.5.1.min.js' %}"></script><script src="{% static 'plugins/bootstrap-3.4.1-dist/js/bootstrap.js' %}"></script>
</body>
</html>

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外媒体广告投放 - 大舍传媒助力企业迈向新台阶,实现精准投放

一、为何选择海外媒体广告投放 随着全球化进程的不断推进&#xff0c;越来越多的企业开始将目光投向国际市场。海外媒体广告投放作为一种有效的宣传手段&#xff0c;可以帮助企业在全球范围内提高品牌知名度和影响力&#xff0c;吸引潜在客户&#xff0c;促进产品销售。 二、…

LeetCode 课程表二(拓扑排序+Python)

使用桶排序算法中的kahn&#xff08;卡恩&#xff09;算法&#xff0c;也可以使用dfs。 这里使用卡恩算法&#xff0c;主要维护一个列表cnt&#xff0c;cnt【i】表示能到达节点i的边&#xff0c;比如说&#xff1a;a到c有一条边&#xff0c;b到c有一条边&#xff0c;那么cnt【…

Pycharm破解流程

1.下载pycharm 网上很多&#xff0c;随便找一个&#xff0c;懒得找的话&#xff0c;或者去我传上去的资源pycharm部分直接取 2.下载文件 文件部分&#xff0c;我放在pycharm文件里面一起 打开下载好的激活包 3.执行脚本 先执行unisntall-all-users.vbs,直接双击打开&#xff0c…

在 Linux 上把 Vim 配置为默认编辑器

目录 ⛳️推荐 在 Linux 命令行中编辑 将 Vim 设置为其他程序的默认值 在 Alpine 中编辑电子邮件 总结 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 我使用 Linux 大概有…

若依集成mybatisplus报错找不到xml

引用&#xff1a;https://blog.csdn.net/qq_65080131/article/details/136677276 MybatisPlusAutoConfiguration中可以知道&#xff0c;系统会自动配置SqlSessionFactory&#xff0c;&#xff0c;但是&#xff0c;当你有自定义的SqlSessionFactory&#xff0c;&#xff0c;就会…

54、图论-实现Trie前缀树

思路&#xff1a; 主要是构建一个trie前缀树结构。如果构建呢&#xff1f;看题意&#xff0c;应该当前节点对象下有几个属性&#xff1a; 1、next节点数组 2、是否为结尾 3、当前值 代码如下&#xff1a; class Trie {class Node {boolean end;Node[] nexts;public Node(…

基于Spring Boot的自习室预定系统的设计与实现

基于Spring Boot的自习室预定系统的设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 自习室界面&#xff0c;在自习室页面可以查看名称、…

项目大集成

一 keeplived 高可用 192.168.11.11nginx keeplived192.168.11.12nginx keeplived 两台均编译安装服务器 1 主服务器修改文件&#xff1a; 2 备服务器修改文本 scp keepalived.conf 192.168.11.12:/etc/keepalived/ 3 给主服务器添加虚拟ip ifconfig ens33:0 192.168…

Flask-SQLAlchemy 中使用显式主主数据库设置

1、问题背景 在一个 Flask-SQLAlchemy 项目中&#xff0c;用户想要使用显式主主数据库设置。具体而言&#xff0c;他想要能够从默认数据库中读取数据&#xff0c;并将数据持久化到两个主数据库中。他希望知道是否可以使用 Flask-SQLAlchemy 和 binds 来实现这一目标。 2、解决…

three.js(3):添加three. js坐标轴、光源和阴影效果

1 实现步骤 要实现阴影效果同样需要几个重要的概念。 我们首先研究一下日常生活中是如何产生阴影效果的。 需要有光。需要一个物体&#xff0c;比如苹果、狗等。需要一个接受投影的元素&#xff0c;比如地面、桌面等。 在 Three.js 中要产生阴影效果其实和现实世界的原理差…

Azure AD统一认证及用户数据同步开发指导

本文主要目的为&#xff1a;指导开发者进行自有服务与Azure AD统一认证的集成&#xff0c;以及阐述云端用户数据同步的实现方案。本文除了会介绍必要的概念、原理、流程外&#xff0c;还会包含Azure门户设置说明&#xff0c;以及使用Fiddler进行全流程的实操验证&#xff0c;同…

苹果电脑装虚拟机好用吗 苹果电脑装虚拟机要钱吗 Parallels对mac的损害 Parallels占用多大空间 PD19

在当今数字化的时代&#xff0c;人们对电脑系统跨设备互联的需求越来越高。作为拥有广泛用户群体的苹果电脑&#xff0c;许多用户会有在Mac系统中运行其他操作系统的需求。在这种情况下&#xff0c;安装虚拟机是一个较好的解决方案。那么接下来就给大家介绍苹果电脑装虚拟机好用…