【Django】开发日报_3.1_Day:员工管理系统(2)

目录

 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:

from django.shortcuts import render
from app01 import models
# Create your views here.
def  depart_list(request):
    """部门列表"""
    #1、从数据加载数据
    #qureyset类型=>列表[对象,对象,对象……]
    qureyset = models.Department.objects.all()

    return render(request,'depart_list.html',{'qureyset':qureyset})

 depart_list.html:


            {% for obj in qureyset %}
              <tr>
                <th>{
   
   { obj.id }}</th>
                <td>{
   
   { obj.title }}</td>
                <td>
                    <a class="btn btn-primary btn-xs">编辑</a>
                    <a class="btn btn-danger btn-xs">删除</a>
                </td>
              </tr>
            {% endfor %}

访问首页

 2、制作添加页面

(1)常用快捷键:

快速注释 :ctrl+/

快速对齐:ctrl+alt+L

(2)基本制作流程:

先写url,

再写视图函数,

然后构建模板,

最后实现逻辑功能。

 (3)添加页面

urls.py

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    #部门列表
    path('depart/list/', views.depart_list),
    #部门添加
    path('depart/add/', views.depart_add),
]

views.py

from django.shortcuts import render
from app01 import models
# Create your views here.
def  depart_list(request):
    """部门列表"""
    #1、从数据加载数据
    #qureyset类型=>列表[对象,对象,对象……]
    qureyset = models.Department.objects.all()

    return render(request,'depart_list.html',{'qureyset':qureyset})

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

    return render(request,'depart_add.html')

depart_add.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="/depart/list">部门管理</a></li>
                <li><a href="/depart/list">Link</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">代码骑士 <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>

访问网页

3、实现添加功能

代码:

views.py

def depart_add(request):
    """添加部门"""
    #1、处理请求
    if request.method == "GET":
        return render(request,'depart_add.html')

    #获取用户提交的POST请求(暂时不考虑title为空的情况,后面有简单方法处理)
    title = request.POST.get("title")

    #2、保存到数据库
    models.Department.objects.create(title=title)

    #3、从定向回到部门列表
    return  redirect("/depart/list/")

depart_add.html

 <!--表单-->
                <form method="post"><!--action可以不写,因为不写的话提交的是当前地址-->
                    {% 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>

 测试:

添加:

成功:

 数据库: 

4、实现删除功能 

urls.py

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    #部门列表
    path('depart/list/', views.depart_list),
    #部门添加
    path('depart/add/', views.depart_add),
    #部门删除
    path('depart/delete/', views.depart_delete),
]

views.py

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

修改depart_list.html

                {% for obj in qureyset %}
                    <tr>
                        <th>{
   
   { obj.id }}</th>
                        <td>{
   
   { obj.title }}</td>
                        <td>
                            <a class="btn btn-primary btn-xs">编辑</a>
                            <a class="btn btn-danger btn-xs" href="/depart/delete/?nid={
   
   { obj.id }}">删除</a>
                        </td>
                    </tr>
                {% endfor %}

测试

删除

数据库

 successfully!

5、实现编辑功能

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

urls.py

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

views.py

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

depart_list.html

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

实现代码:

urls.py

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    #部门列表
    path('depart/list/', views.depart_list),
    #部门添加
    path('depart/add/', views.depart_add),
    #部门删除
    path('depart/delete/', views.depart_delete),
    #部门修改
#http://127.0.0.1:8000/depart/1/edit/
#http://127.0.0.1:8000/depart/2/edit/
#http://127.0.0.1:8000/depart/3/edit/
#……
    path('depart/<int:nid>/edit/', views.depart_edit),
]

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})

    #如果用户传递过来一个post请求
    #1、获取用户提交的title
    title = request.POST.get("title")
    #2、根据id到数据库中的数据进行更新
    models.Department.objects.filter(id=nid).update(title=title)
    #3、重定向用户列表
    return redirect("/depart/list/")

depart_list.html

{% for obj in qureyset %}
                    <tr>
                        <th>{
   
   { 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 %}

depart_edit.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="/depart/list">部门管理</a></li>
                <li><a href="/depart/list">Link</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">代码骑士 <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"><!--action可以不写,因为不写的话提交的是当前地址-->
                    {% 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.6.0.min.js' %}"></script>
<script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>

测试:

修改

完成

数据库

猜你喜欢

转载自blog.csdn.net/qq_51701007/article/details/126824555