当前位置:   article > 正文

【Django】开发日报_3.1_Day:员工管理系统-增删改查_基于django的审核功能实现

基于django的审核功能实现

目录

 0、先在数据库中写入测试数据:

 1、将部门列表从数据库加载到前端页面

 2、制作添加页面

 (1)常用快捷键:

 (2)基本制作流程:

 (3)添加页面

3、实现添加功能

4、实现删除功能 

5、实现编辑功能

***使用Django的URL特殊传参方法


0、先在数据库中写入测试数据:

 insert into app01_department(title) value("IT部门"),("销售部门");

结果发生报错:

原因:

建表时,没有设置中文字符(utf8)

修改:

alter table 表名 convert to character set utf8;

友情链接:

ERROR 1366 (HY000): Incorrect string value 解决方案_Acloasia的博客-CSDN博客

插入成功:

查看:

1、将部门列表从数据库加载到前端页面

views.py:

  1. from django.shortcuts import render
  2. from app01 import models
  3. # Create your views here.
  4. def depart_list(request):
  5. """部门列表"""
  6. #1、从数据加载数据
  7. #qureyset类型=>列表[对象,对象,对象……]
  8. qureyset = models.Department.objects.all()
  9. return render(request,'depart_list.html',{'qureyset':qureyset})

 depart_list.html:

  1. {% for obj in qureyset %}
  2. <tr>
  3. <th>{{ obj.id }}</th>
  4. <td>{{ obj.title }}</td>
  5. <td>
  6. <a class="btn btn-primary btn-xs">编辑</a>
  7. <a class="btn btn-danger btn-xs">删除</a>
  8. </td>
  9. </tr>
  10. {% endfor %}

访问首页

 2、制作添加页面

(1)常用快捷键:

快速注释 :ctrl+/

快速对齐:ctrl+alt+L

(2)基本制作流程:

先写url,

再写视图函数,

然后构建模板,

最后实现逻辑功能。

 (3)添加页面

urls.py

  1. from django.contrib import admin
  2. from django.urls import path
  3. from app01 import views
  4. urlpatterns = [
  5. #部门列表
  6. path('depart/list/', views.depart_list),
  7. #部门添加
  8. path('depart/add/', views.depart_add),
  9. ]

views.py

  1. from django.shortcuts import render
  2. from app01 import models
  3. # Create your views here.
  4. def depart_list(request):
  5. """部门列表"""
  6. #1、从数据加载数据
  7. #qureyset类型=>列表[对象,对象,对象……]
  8. qureyset = models.Department.objects.all()
  9. return render(request,'depart_list.html',{'qureyset':qureyset})
  10. def depart_add(request):
  11. """添加部门"""
  12. return render(request,'depart_add.html')

depart_add.html

  1. {% load static %}
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Title</title>
  7. <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}">
  8. <style>
  9. .navbar {
  10. border-radius: 0;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <!--导航-->
  16. <nav class="navbar navbar-default">
  17. <div class="container">
  18. <div class="navbar-header">
  19. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
  20. data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
  21. <span class="sr-only">Toggle navigation</span>
  22. <span class="icon-bar"></span>
  23. <span class="icon-bar"></span>
  24. <span class="icon-bar"></span>
  25. </button>
  26. <a class="navbar-brand" href="#">联通用户管理系统</a>
  27. </div>
  28. <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
  29. <ul class="nav navbar-nav">
  30. <li><a href="/depart/list">部门管理</a></li>
  31. <li><a href="/depart/list">Link</a></li>
  32. </ul>
  33. <ul class="nav navbar-nav navbar-right">
  34. <li><a href="#">登录</a></li>
  35. <li class="dropdown">
  36. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
  37. aria-expanded="false">代码骑士 <span class="caret"></span></a>
  38. <ul class="dropdown-menu">
  39. <li><a href="#">个人资料</a></li>
  40. <li><a href="#">我的信息</a></li>
  41. <li role="separator" class="divider"></li>
  42. <li><a href="#">注销</a></li>
  43. </ul>
  44. </li>
  45. </ul>
  46. </div>
  47. </div>
  48. </nav>
  49. <!--添加部门表单-->
  50. <div>
  51. <div class="container">
  52. <div class="panel panel-default">
  53. <div class="panel-heading">
  54. <h3 class="panel-title"> 新建部门 </h3>
  55. </div>
  56. <div class="panel-body">
  57. <form>
  58. <div class="form-group">
  59. <label> 标题 </label>
  60. <input type="text" class="form-control" placeholder="标题" name="title"/>
  61. </div>
  62. <button type="submit" class="btn btn-primary"> 提交 </button>
  63. </form>
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. <script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
  69. <script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
  70. </body>
  71. </html>

访问网页

3、实现添加功能

代码:

views.py

  1. def depart_add(request):
  2. """添加部门"""
  3. #1、处理请求
  4. if request.method == "GET":
  5. return render(request,'depart_add.html')
  6. #获取用户提交的POST请求(暂时不考虑title为空的情况,后面有简单方法处理)
  7. title = request.POST.get("title")
  8. #2、保存到数据库
  9. models.Department.objects.create(title=title)
  10. #3、从定向回到部门列表
  11. return redirect("/depart/list/")
'
运行

depart_add.html

  1. <!--表单-->
  2. <form method="post"><!--action可以不写,因为不写的话提交的是当前地址-->
  3. {% csrf_token %}
  4. <div class="form-group">
  5. <label> 标题 </label>
  6. <input type="text" class="form-control" placeholder="标题" name="title"/>
  7. </div>
  8. <button type="submit" class="btn btn-primary"> 提交 </button>
  9. </form>

 测试:

添加:

成功:

 数据库: 

4、实现删除功能 

urls.py

  1. from django.contrib import admin
  2. from django.urls import path
  3. from app01 import views
  4. urlpatterns = [
  5. #部门列表
  6. path('depart/list/', views.depart_list),
  7. #部门添加
  8. path('depart/add/', views.depart_add),
  9. #部门删除
  10. path('depart/delete/', views.depart_delete),
  11. ]

views.py

  1. def depart_delete(request):
  2. """删除部门"""
  3. #1、获取id
  4. #通过get请求得到url的参数实现删除http://127.0.0.1:8000/depart/delete/?nid=1
  5. nid = request.GET.get("nid")
  6. #2、删除
  7. models.Department.objects.filter(id=nid).delete()
  8. # 3、重定向回到部门列表
  9. return redirect("/depart/list/")
'
运行

修改depart_list.html

  1. {% for obj in qureyset %}
  2. <tr>
  3. <th>{{ obj.id }}</th>
  4. <td>{{ obj.title }}</td>
  5. <td>
  6. <a class="btn btn-primary btn-xs">编辑</a>
  7. <a class="btn btn-danger btn-xs" href="/depart/delete/?nid={{ obj.id }}">删除</a>
  8. </td>
  9. </tr>
  10. {% endfor %}

测试

删除

数据库

 successfully!

5、实现编辑功能

***使用Django的URL特殊传参方法

urls.py

  1. #部门修改
  2. #http://127.0.0.1:8000/depart/1/edit/
  3. #http://127.0.0.1:8000/depart/2/edit/
  4. #http://127.0.0.1:8000/depart/3/edit/
  5. #……
  6. path('depart/<int:nid>/edit/', views.depart_edit),
  7. ]

views.py

  1. def depart_edit(request,nid):
  2. """部门修改"""
  3. return render(request,'depart_edit.html')
'
运行

depart_list.html

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

实现代码:

urls.py

  1. from django.contrib import admin
  2. from django.urls import path
  3. from app01 import views
  4. urlpatterns = [
  5. #部门列表
  6. path('depart/list/', views.depart_list),
  7. #部门添加
  8. path('depart/add/', views.depart_add),
  9. #部门删除
  10. path('depart/delete/', views.depart_delete),
  11. #部门修改
  12. #http://127.0.0.1:8000/depart/1/edit/
  13. #http://127.0.0.1:8000/depart/2/edit/
  14. #http://127.0.0.1:8000/depart/3/edit/
  15. #……
  16. path('depart/<int:nid>/edit/', views.depart_edit),
  17. ]

views.py

  1. def depart_edit(request,nid):
  2. """部门修改"""
  3. if request.method == "GET":
  4. # 根据nid,获取想要编辑的一行对象
  5. row_object = models.Department.objects.filter(id=nid).first()
  6. # print(row_object.id,row_object.title)
  7. return render(request, 'depart_edit.html', {"row_object": row_object})
  8. #如果用户传递过来一个post请求
  9. #1、获取用户提交的title
  10. title = request.POST.get("title")
  11. #2、根据id到数据库中的数据进行更新
  12. models.Department.objects.filter(id=nid).update(title=title)
  13. #3、重定向用户列表
  14. return redirect("/depart/list/")
'
运行

depart_list.html

  1. {% for obj in qureyset %}
  2. <tr>
  3. <th>{{ obj.id }}</th>
  4. <td>{{ obj.title }}</td>
  5. <td>
  6. <a class="btn btn-primary btn-xs" href="/depart/{{ obj.id }}/edit/">编辑</a>
  7. <a class="btn btn-danger btn-xs" href="/depart/delete/?nid={{ obj.id }}">删除</a>
  8. </td>
  9. </tr>
  10. {% endfor %}

depart_edit.html

  1. {% load static %}
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>Title</title>
  7. <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}">
  8. <style>
  9. .navbar {
  10. border-radius: 0;
  11. }
  12. </style>
  13. </head>
  14. <body>
  15. <!--导航-->
  16. <nav class="navbar navbar-default">
  17. <div class="container">
  18. <div class="navbar-header">
  19. <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
  20. data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
  21. <span class="sr-only">Toggle navigation</span>
  22. <span class="icon-bar"></span>
  23. <span class="icon-bar"></span>
  24. <span class="icon-bar"></span>
  25. </button>
  26. <a class="navbar-brand" href="#">联通用户管理系统</a>
  27. </div>
  28. <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
  29. <ul class="nav navbar-nav">
  30. <li><a href="/depart/list">部门管理</a></li>
  31. <li><a href="/depart/list">Link</a></li>
  32. </ul>
  33. <ul class="nav navbar-nav navbar-right">
  34. <li><a href="#">登录</a></li>
  35. <li class="dropdown">
  36. <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
  37. aria-expanded="false">代码骑士 <span class="caret"></span></a>
  38. <ul class="dropdown-menu">
  39. <li><a href="#">个人资料</a></li>
  40. <li><a href="#">我的信息</a></li>
  41. <li role="separator" class="divider"></li>
  42. <li><a href="#">注销</a></li>
  43. </ul>
  44. </li>
  45. </ul>
  46. </div>
  47. </div>
  48. </nav>
  49. <!--添加部门表单-->
  50. <div>
  51. <div class="container">
  52. <div class="panel panel-default">
  53. <div class="panel-heading">
  54. <h3 class="panel-title"> 修改部门 </h3>
  55. </div>
  56. <div class="panel-body">
  57. <!--表单-->
  58. <form method="post"><!--action可以不写,因为不写的话提交的是当前地址-->
  59. {% csrf_token %}
  60. <div class="form-group">
  61. <label> 标题 </label>
  62. <input type="text" class="form-control" placeholder="标题" name="title" value="{{ row_object.title }}"/>
  63. </div>
  64. <button type="submit" class="btn btn-primary"> 提交 </button>
  65. </form>
  66. </div>
  67. </div>
  68. </div>
  69. </div>
  70. <script src="{% static 'js/jquery-3.6.0.min.js' %}"></script>
  71. <script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
  72. </body>
  73. </html>

测试:

修改

完成

数据库

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/886022
推荐阅读
相关标签
  

闽ICP备14008679号