主题:用户管理系统

文章目录

  • 一、新建项目
    • 1、创建Django项目
    • 2、创建并注册app
    • 3、设计表结构
    • 4、在MySQL中生成表
      • 4.1、连接MySQL,生成数据库
      • 4.2、修改配置文件(连接MySQL)
      • 4.3、django命令生成表
    • 5、静态目录
  • 二、员工管理系统
    • 1、部门管理
      • 1.1、设置导航条
      • 1.2、面板区域
      • 1.3、部门-数据库数据
      • 1.4、部门-添加部门页面
        • 1.4.1、基础准备(编写后端页面的跳转逻辑)
        • 1.4.2、编写前端(新建部门页面:depart_add.html)
      • 1.5、部门-添加
      • 1.6、部门-删除
      • 1.7、部门-编辑
        • 1.7.1、基础效果
        • 1.7.2、优化:编辑界面的输入框里有默认值
        • 1.7.3、【提交】

一、新建项目

1、创建Django项目

django-admin startproject employeemanage

2、创建并注册app

创建app

cd  employeemanage
python manage.py startapp app01

注册app

3、设计表结构

关于 1、用户表的存储名称?ID?

我们创建俩表:

  • 员工表:存储员工信息
  • 部份表:公司部门种类

那么一个员工属于哪个部门呢?我们是直接把部门名称,还是连表,or用一个id(1:客服;2:运维)表示?

==> 具体参考上图,本项目我们用id

  • app01/models.py
from django.db import modelsclass Department(models.Model):""" 部门表 """title = models.CharField(verbose_name='标题', max_length=32)class UserInfo(models.Model):"""员工表1:姓名; 2:密码; 3、年龄; 4、账户余额; 5、入职时间; 6、所属部门; 7、性别。"""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=2, default=0)create_time = models.DateTimeField(verbose_name="入职时间")# 无约束# depart_id = models.BigIntegerField(verbose_name="部门ID")# 1.有约束#   - to,与那张表关联#   - to_field,表中的那一列关联# 2.django自动#   - 写的depart#   - 生成数据列 depart_id# 3.部门表被删除# ### 3.1 级联删除depart = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE)# ### 3.2 置空# depart = models.ForeignKey(to="Department", to_field="id", null=True, blank=True, on_delete=models.SET_NULL)# 在django中做的约束gender_choices = ((1, "男"),(2, "女"),)gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices)

4、在MySQL中生成表

4.1、连接MySQL,生成数据库

  • 记得安第三方仓库

    pip install mysqlclient

  • 启动mysql

    C:\Users\pc>mysql -u root -p
    Enter password: ************* # 登录后进入终端
    
  • 创建数据库:

    mysql> create database 数据库名字;
    Query OK, 1 row affected (0.01 sec)
    

    这里表名我设置为:employee

    create database employee;

4.2、修改配置文件(连接MySQL)

修改配置文件 settings.py:

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'dj',  # 数据库名称'USER': 'root',  # MySQL的账户名'PASSWORD': 'xxx',  # MySQL的密码'HOST': '127.0.0.1',  # 哪台机器的MySQL,本机就直接用127.0.0.1'PORT': 3306,}
}

django默认用的数据库是sqlite,现在我们改用mysql

4.3、django命令生成表

python manage.py makemigrations
python manage.py migrate

查看表:

  1. 进入数据库 use 数据库名字;
  2. show tables;
  3. desc 表的名字;

示例:

mysql> use employee;
Database changed
mysql> show tables;
+----------------------------+
| Tables_in_employee         |
+----------------------------+
| app01_department           |
| app01_userinfo             |
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
+----------------------------+
12 rows in set (0.00 sec)mysql> desc app01_userinfo;
+-------------+---------------+------+-----+---------+----------------+
| Field       | Type          | Null | Key | Default | Extra          |
+-------------+---------------+------+-----+---------+----------------+
| id          | bigint        | NO   | PRI | NULL    | auto_increment |
| name        | varchar(16)   | NO   |     | NULL    |                |
| password    | varchar(64)   | NO   |     | NULL    |                |
| age         | int           | NO   |     | NULL    |                |
| account     | decimal(10,2) | NO   |     | NULL    |                |
| create_time | datetime(6)   | NO   |     | NULL    |                |
| gender      | smallint      | NO   |     | NULL    |                |
| depart_id   | bigint        | NO   | MUL | NULL    |                |
+-------------+---------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)mysql>

5、静态目录

二、员工管理系统

1、部门管理

体验,最原始方法来做。

Django中提供 Form 和 ModelForm 组件(方便)

我们先设计一下预想的前端布局:

下面就可以开始制作了!!!

  • 设置导航条
  • 面板区域
  • 部门表格区域

1.1、设置导航条

(1)先引入静态文件

{% 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/css/bootstrap.min.css' %}">
</head>
<body><script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>

(2)到Bootstrap官网找导航条示例代码,并修改成我们想要的样子

到Bootstrap官网找样式:组件 · Bootstrap v3 中文文档 | Bootstrap 中文网 (bootcss.com)

且这个效果中存在圆角效果,我们想要将其除去,只需在html文件中添加:

<style>.navbar{border-radius: 0;}</style>
CSS属性 border-radius用来设置边框圆角。当使用一个半径时确定一个圆形;当使用两个半径时确定一个椭圆,这个(椭)圆与边框的交集形成圆角效果。

再加上从Bootstrap官网复制下来的“导航条”前端代码,导航栏基础效果就完成了,代码如下:

{% 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/css/bootstrap.min.css' %}"><style>.navbar{border-radius: 0;}</style>
</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="#">Brand</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="#">Link <span class="sr-only">(current)</span></a></li><li><a href="#">Link</a></li><li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a><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><form class="navbar-form navbar-left"><div class="form-group"><input type="text" class="form-control" placeholder="Search"></div><button type="submit" class="btn btn-default">Submit</button></form><ul class="nav navbar-nav navbar-right"><li><a href="#">Link</a></li><li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a><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></ul></li></ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid -->
</nav><script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>
python manage.py runserver

(注意:单打开这个HTML文件是没有效果的,需要我们开启Django项目,访问设置的url

效果展示:

这个是BootStrap官网提供的导航栏

现在,我们根据自己的需求尽行修改

首先,上面那个导航条中的(从左到右):

  • “Dropdown”下拉菜单
  • “Search”输入框
  • “Submit”提交键
  • 最右边的“Dropdown”下拉菜单(作为)

是我们不需要的,我们在原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/css/bootstrap.min.css' %}"><style>.navbar{border-radius: 0;}</style>
</head>
<body>
<nav class="navbar navbar-default"><div class="container-fluid"><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><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav"><li><a href="#">部门管理</a></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">Coder01 <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><script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>

效果展示:

如果想让导航栏有居中效果:

效果展示:

1.2、面板区域

写完了导航栏,下面就是

在html中导航栏部分的下面添加:

<div><div class="container"><div><a class="btn btn-primary" href="depart_add.html">新建部门</a>{#新建一个 depart_add.html , 用来写新建部门界面#}</div></div>

引入面板

<div><div class="container"><div><a class="btn btn-primary" href="depart_add.html">新建部门</a>{#新建一个 depart_add.html , 用来写新建部门界面#}</div><div class="panel panel-default"><div class="panel-heading">Panel heading without title</div><div class="panel-body">Panel content</div></div>

然后引入表格

引入表格其实有个更简便的方式:

直接copy官方给的这个“演示表格”的前端代码

然后复制

代码展示:

<div><div class="container"><div><a class="btn btn-primary" href="depart_add.html">新建部门</a>{#新建一个 depart_add.html , 用来写新建部门界面#}</div><div class="panel panel-default"><!-- Default panel contents --><div class="panel-heading">Panel heading</div><!-- Table --><table class="table"><thead><tr><th>#</th><th>First Name</th><th>Last Name</th><th>Username</th></tr></thead><tbody><tr><th scope="row">1</th><td>Mark</td><td>Otto</td><td>@mdo</td></tr><tr><th scope="row">2</th><td>Jacob</td><td>Thornton</td><td>@fat</td></tr><tr><th scope="row">3</th><td>Larry</td><td>the Bird</td><td>@twitter</td></tr></tbody></table></div></div>

效果演示:

然后可以加点细节:

效果展示:

然后我们把“Panel heading”的字样变为“部门列表”,再加个小图样

  • 老样子,找到图标,检查它,然后复制代码

<div class="panel-heading"><span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>部门列表
</div>

效果展示:

然后,我们就要对表中数据进行增删改了

  • 表格又三列:ID、部门名称、操作 ==> 删掉html文件中的数据就好了
  • 操作中有俩按钮:编辑和删除 ==> 使用 btn (作用:添加按钮)
<!-- 表格部分 --><table class="table table-bordered"><thead><tr><th>ID</th><th>名称</th><th>操作</th></tr></thead><tbody><tr><th>1</th><td>销售部</td><td><a class="btn btn-primary btn-xs">编辑</a>{# btn ==> 添加btn的按钮#}{# btn-primary ==> 蓝色按钮(按钮的样式)#}{# btn-xs ==>   这会让按钮看起来特别小(按钮大小)#}<a class="btn btn-danger btn-xs">删除</a></td></tr></tbody></table></div></div>

效果展示:

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-3.4.1/css/bootstrap.min.css' %}"><style>.navbar {border-radius: 0;}</style>
</head>
<body>
<nav class="navbar navbar-default"><div class="container"><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><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav"><li><a href="#">部门管理</a></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">Coder01 <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.html"><span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>新建部门</a>{#新建一个 depart_add.html , 用来写新建部门界面#}</div><div class="panel panel-default"><!-- Default panel contents --><div class="panel-heading"><span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>部门列表</div><!-- 表格部分 --><table class="table table-bordered"><thead><tr><th>ID</th><th>名称</th><th>操作</th></tr></thead><tbody><tr><th>1</th><td>销售部</td><td><a class="btn btn-primary btn-xs">编辑</a>{# btn ==> 添加btn的按钮#}{# btn-primary ==> 蓝色按钮(按钮的样式)#}{# btn-xs ==>    这会让按钮看起来特别小(按钮大小)#}<a class="btn btn-danger btn-xs">删除</a></td></tr></tbody></table></div></div></div><script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>

1.3、部门-数据库数据

  • 用sql语句创建数据
  • 在后端获取数据,并传入前端
  • 在前端处理数据

(1)用sql语句创建数据

mysql -u root -p
use employee
show tables;
desc app01_userinfo;
desc app01_department;
insert into app01_department(title) values("IT部门"),("销售部");
select * from app01_department;


(2)在后端获取数据,并传入前端

app01/views.py

from django.shortcuts import render
from app01 import models# Create your views here.
def depart_list(request):"""部门列表"""# 去数据库中获取所有的部门列表# 通过导入模块的方式直接获取所有表,存入queryset,省的表多的时候一个一个导入太麻烦了queryset = models.Department.objects.all()  # queryset 形式就是一个一个对象 [对象,对象,对象]return render(request, "depart_list.html", {'queryset': queryset})

这样数据就放在queryset这个变量里了,并传入前端

(3)在前端处理数据

depart_list.html

<!-- 表格部分 --><table class="table table-bordered"><thead><tr><th>ID</th><th>名称</th><th>操作</th></tr></thead><tbody>{% for obj in queryset %}<tr><th>{{ obj.id }}</th><td>{{ obj.title }}</td><td><a class="btn btn-primary btn-xs">编辑</a>{# btn ==> 添加btn的按钮#}{# btn-primary ==> 蓝色按钮(按钮的样式)#}{# btn-xs ==>   这会让按钮看起来特别小(按钮大小)#}<a class="btn btn-danger btn-xs">删除</a></td></tr>{% endfor %}</tbody></table>

效果展示:

1.4、部门-添加部门页面

任务:点击添加部门,进入部门添加页面

预想效果:

1.4.1、基础准备(编写后端页面的跳转逻辑)

  • 在列表页面(depart_list.html)添加跳转(href)
  • 在urls.py添加url(”depart/add/“)
  • 编写视图函数(app01/views.py)

(1)修改depart_list.html下的“新建部门”部分

修改href,使之指向/depart/add/这个url

<a class="btn btn-success" href="/depart/add/" >{# 可以添加一个 target="_blank" : 会打开一个新的标签页,如果不设置,会在原页面打开(这里我们还是在当前页面打开) #}<span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>新建部门</a>

(2)在urls.py中添加”depart/add/“

urlpatterns = [path('depart/list/', views.depart_list),path('depart/add/', views.depart_add),
]

(3)在app01/views.py(视图函数)中添加函数 depart_add( )

def depart_add(request):""" 添加部门 """pass

1.4.2、编写前端(新建部门页面:depart_add.html)

(1)引入静态文件

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>新建部门</title><link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}"><style>.navbar {border-radius: 0;}</style>
</head>
<body>
{# 导航条部分 #}{# 添加部门部分 #}<script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>

(2)复用导航栏代码+新建部门

  • copydepart_list.html中的导航栏代码
  • 编写新建部门功能:老样子,Bootstrap官网找模板

这里不再叙述,直接上代码:

depart_add.html

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>新建部门</title><link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}"><style>.navbar {border-radius: 0;}</style>
</head>
<body>
{# 导航条部分 #}
<nav class="navbar navbar-default"><div class="container"><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><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"><ul class="nav navbar-nav"><li><a href="#">部门管理</a></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">Coder01 <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><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.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>

1.5、部门-添加

(1)前端处理

(2)后端处理

app01/views.py

from django.shortcuts import render, redirect
from app01 import models# Create your views here.
def depart_list(request):"""部门列表"""# 去数据库中获取所有的部门列表# 通过导入模块的方式直接获取所有表,存入queryset,省的表多的时候一个一个导入太麻烦了queryset = models.Department.objects.all()  # queryset 形式就是一个一个对象 [对象,对象,对象]return render(request, "depart_list.html", {'queryset': queryset})def depart_add(request):""" 添加部门 """# (1)处理GET请求# 在部门聊表界面点击”新建部门“ ==> 提交GET请求(去 depart_add.html)if request.method == "GET":return render(request, 'depart_add.html')# (2)获得用户POST提交过来的数据title = request.POST.get("title")"""遗留问题:输入为空怎么办?输入合不合法?等等"""# (3)保存到数据库models.Department.objects.create(title=title)# (4)重定向回部门列表return redirect("/depart/list/")

效果展示:

  • 输入”企划部“和”新媒体“俩部门

  • 每次提交后自动跳转回部门列表管理界面,并显示新建的部门

1.6、部门-删除

任务:点击部门管理界面中列表中的删除键,及删除该部门

原理:点击删除 ==> 访问’https//127.0.0.1:8000/depart/delete/?nid=1’ ==> 获取url中nid的值,删除部门

(1)urls.py

urlpatterns = [path('depart/list/', views.depart_list),path('depart/add/', views.depart_add),path('depart/detele/', views.depart_detele)
]

(2)views.py

def depart_detele(request):"""删除部门"""# 获取ID# 'https//127.0.0.1:8000/depart/delete/?nid=1'nid = request.GET.get("nid")# 删除models.Department.objects.filter(id=nid).delete()# 重定向回部门列表return redirect("/depart/list/")

(3)depart_list.html

只需要修改一句:

为原本的”删除“键添加href

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

效果展示:

点击删除

1.7、部门-编辑

任务:

  • 点击列表中的"编辑",进入一个类似”新建部门“的界面,编辑部门
  • 编辑界面的输入框有:默认值 ==> 点击【编辑】时顺便获取id,并提供id搜索title(部门名称)

1.7.1、基础效果

  • urls.py

    path('depart/edit/', views.depart_edit),
    
  • app01/views.py

    def depart_edit(request):"""修改部门"""return render(request, 'depart_edit.html')
    
  • depart_edit.html

    直接Copydepart_add.html,修改一下文字

  • depart_list.html

    <a class="btn btn-primary btn-xs" href="/depart/edit/">编辑</a>
    

效果展示:
点击“编辑”

1.7.2、优化:编辑界面的输入框里有默认值

  • urls.py

    添加正则表达式<int:nid>,得到nid

    path('depart/<int:nid>/edit/', views.depart_edit),
    
  • views.py

    def depart_edit(request, nid):"""修改部门"""# 根据nid,获得他的数据row_object = models.Department.objects.filter(id=nid).first()print(row_object.id, row_object.title)return render(request, 'depart_edit.html', {'row_object': row_object})
    
  • depart_list.html

    <a class="btn btn-primary btn-xs" href="/depart/{{ obj.id }}/edit/">编辑</a>
    
  • depart_edit.html

    <div class="form-group"><label>标题</label><input type="text" class="form-control" placeholder="标题" name="title"value="{{ row_object.title }}"></div>
    

点击 [编辑] 会报:Page not found

解决方法:重启django项目:python manage.py runserver

效果展示:

终端可以看到输出:

[23/Feb/2022 01:39:02] "GET /depart/list/ HTTP/1.1" 200 3890
1 IT部门

1.7.3、【提交】

  • views.py
def depart_edit(request, nid):"""修改部门"""if request.method == "GET":# 根据nid,获得他的数据row_object = models.Department.objects.filter(id=nid).first()print(row_object.id, row_object.title)return render(request, 'depart_edit.html', {'row_object': row_object})# 获取用户提交的标题title = request.POST.get("title")# 根据ID找到数据库中的数据(部门名称),并更新models.Department.objects.filter(id=nid).update(title=title)# 重定向回部门列表return redirect("/depart/list/")

效果展示:

Django 02 :部门管理 【面板设计(Bootstrap)+部门的增删改查(Django+MySQL)】相关推荐

  1. java部门管理_系统管理模块_部门管理_实现基本的增删改查功能

    系统管理模块_部门管理1_实现基本的增删改查功能 先不考虑上级部门 设计实体.表 1.设计实体 Department.java public classDepartment {privateLong ...

  2. BootStrap实现带有增删改查功能的表格(DEMO详解)

    前言 bootstrap的表格样式,有类似EasyUI的表格,也有卡片式表格,放到移动端显示,各有千秋.但是BootStrap自带的表格是没有操作列的,网上的资源不少,但是都是比较单一.零碎,JS.C ...

  3. ManytoMany字段增删改查Django

    Django下ManytoMany 增删改查 建立学生类老师类多对多关系,用ManytoManyField,迁移同步后自动生成中间表tb_Teacher_Student # 学生类 class Stu ...

  4. Django简易测试平台三:模块的增删改查

    1.新建模块base INSTALLED_APPS 增加模块名:base 2.路由设计 1)API/urls.py 配置: 新增如下内容 url(r'^base', include("bas ...

  5. vue django mysql_django2 rest_framework + vue.js + mysql5.6 实现增删改查

    1.安装pymysql,mysqlclient,创建项目django-admin startproject django3 2.在Mysql中创建一个数据库叫django3db,打开项目,修改一下数据 ...

  6. python增删改查人名管理_python3字典列表的增删改查(名片管理系统函数版)

    1.列表的增删改查 增加:有三种添加方式(append.insert.extend) #append:把添加的内容直接添加到列表的末尾 a=[1,2,3] a.append('abc') print( ...

  7. 02.Mybatis的动态代理方式实现增删改查

    动态代理的方式实现增删改查: 通过约定的方式定位sql语句 约定 > 配置文件 > 硬编码 约定的目标是省略掉通过硬编码的方式定位sql的代码,通过接口直接定位出sql语句,以下代码为通过 ...

  8. python增删改查的框架_python的Web框架,Django的ORM,模型基础,MySQL连接配置及增删改查...

    Django中的ORM简介 ORM概念:对象关系映射(Object Relational Mapping,简称ORM): 用面向对象的方式描述数据库,去操作数据库,甚至可以达到不用编写SQL语句就能够 ...

  9. Django 07模型层—单表操作(增删改查)

    单表查询 一.数据库相关设置 ''' # Mysql连接配置 DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': ...

  10. django关于Mysql增删改查操作以及浏览器数据返回

    1.serializers: from django.core import serializersdef squitData(request):#查询一条#c1=Catinfo.objects.ge ...

最新文章

  1. 面试总结-百度(1)
  2. laravel 报错htmlspecialchars() expects parameter 1 to be string, object given
  3. 【WPF】ListBox嵌套与事件冒泡
  4. 说一说Android事件分发中的requestDisallowInterceptTouchEvent
  5. 挑战程序设计竞赛部分题目选择排序、二分查找找出下标、深度优先算法、求三角形max周长、蚂蚁算法、操作excel
  6. java 标准输入流 关闭 打开_java--标准输入输出流
  7. H264中DCT变换,量化,反量化,反DCT变换
  8. freecplus框架简介
  9. 优秀的程序员是如何诞生的?
  10. 如何控制写入文件大小java_写入文本文件时如何更改字体大小 - java
  11. Java关键字与保留字
  12. DS4000系列存储配置storage manager介绍
  13. WPS JS 宏搜索带颜色的字的笔记
  14. MSF evasion模块的使用
  15. 基于人工神经网络的识别Matlab,基于人工神经网络的汽车牌照识别MATLAB实现
  16. 尊尊网如何从0-1启动私域运营
  17. GPGPU基础(一):一些基本概念
  18. Win7 未识别网络 的20种常见解决方案
  19. 新堂NUC505开发板第一炮-启动篇
  20. 电池寿命问题 (贪心)

热门文章

  1. SAR影像数据分辨率与像素间隔
  2. 新博android毕业前
  3. MATLAB回归分析(1)
  4. 自然语言处理算法工程师笔试题目_NLPer-Interview - NLP 算法工程师相关的面试题...
  5. 数据分析可视化-厦门真的不止鼓浪屿
  6. js 取两个值之差的绝对值
  7. Java中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具
  8. ipdb python调试工具
  9. 天了噜!“钢铁侠”马斯克和亚马逊即将在火星开战?
  10. 2007软件英雄大会,小弟我会众英雄