【3】Django项目-人力资源管理系统- web网页模板继承(原始方式)

人力资源管理系统- 部门管理(原始方式)

一 、网页样式草图

二、设计模板

 

 layout.html 代码

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>新增部门</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-5.3.0/css/bootstrap.css' %}"/>
    <style>
        {# 去掉导航条 navbar的圆角 #}
        .navbar {
            border-radius: 0;
        }
    </style>
</head>
<body>

<nav class="navbar navbar-expand-lg bg-body-tertiary">
    <div class="container">
        <a class="navbar-brand" href="#">
            <img src="{% static 'img/logo.png' %}" alt="" width="30" height="30">
            工联智慧企业资源管理系统</a>

        <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="#">Link</a>
                </li>
            </ul>
            <ul class="navbar-nav mr-1 mb-lg-0">
                <li class="nav-item">
                    <a class="nav-link active" aria-current="page" href="/depart/list/">登录</a>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"
                       aria-expanded="false">
                        路平
                    </a>
                    <ul class="dropdown-menu">
                        <li><a class="dropdown-item" href="#">退出登录</a></li>
                        <li><a class="dropdown-item" href="#">Another action</a></li>
                        <li>
                            <hr class="dropdown-divider">
                        </li>
                        <li><a class="dropdown-item" href="#">Something else here</a></li>
                    </ul>
                </li>

            </ul>

        </div>
    </div>
</nav>

<div>
    <div class="container">
{#        定义为模板      {% block content %} {% endblock %}         #}
       {% block content %} {% endblock %}

    </div>
</div>

        <script src="{% static 'js/jquery-3.6.4.min.js' %}"></script>
        <script src="{% static 'plugins/bootstrap-5.3.0/js/bootstrap.js' %}"></script>
</body>
</html>

三、继承模板

1.depart_list.html 

 

 

{#继承模板#}
{% extends 'layout.html' %}

{% block content %}
    <div class="mt-3">


        {#    ================================================#}
        {#        在同一页面新增#}
        {#            <div>#}
        {##}
        {#                <button class="btn btn-primary btn-sm" type="button" data-bs-toggle="collapse"#}
        {#                        data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">#}
        {#                    <a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseExample" role="button"#}
        {#                       aria-expanded="false" aria-controls="collapseExample">#}
        {#                    <span class="ml-2 text-sm font-weight-bold">#}
        {##}
        {#                    <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor"#}
        {#                         class="bi bi-plus-circle " viewBox="0 0 16 16">#}
        {#                    <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>#}
        {#                    <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/>#}
        {#                    </svg>#}
        {#                    </span>#}
        {#                        新增部门#}
        {#                    </a>#}
        {#                </button>#}
        {#            </div>#}
        {#            <div class="collapse" id="collapseExample">#}
        {#                <div class="card card-body  mt-2">#}
        {#                    <form class="align-items-center row g-3" method="post" >#}
        {#                                            post 发送方式必须使用   {% csrf_token %}   #}
        {#                        {% csrf_token %}#}
        {#                        <div class="col text-end">#}
        {#                            <label class=" ">新增部门名称:</label>#}
        {#                        </div>#}
        {#                        <div class="col">#}
        {#                            <input type="text" class="form-control " name="dp_name" placeholder="请输入...">#}
        {#                        </div>#}
        {#                        <div class="col">#}
        {#                            <button type="submit" class="btn btn-primary btn-sm flex-sm-fill " >提   交</button>#}
        {#                        </div>#}
        {#                    </form>#}
        {#                </div>#}
        {#            </div>#}

        {#=================================================================#}

        <a class="btn btn-primary btn-sm" href="/depart/add" target="_blank">
                            <span class="ml-2 text-sm font-weight-bold">
                                <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor"
                                     class="bi bi-plus-circle " viewBox="0 0 16 16">
                                <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
                                <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/>
                            </svg>
                            </span>
            <span class="ml-2 text-sm font-weight-bold"> 新增部门 </span>

        </a>

    </div>
    <div class="card mt-3">
        <div class="card-header">
            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-list"
                 viewBox="0 0 16 16">
                <path fill-rule="evenodd"
                      d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z"/>
            </svg>
            部门列表
        </div>
        <div class="card-body">
            <table class="table">
                <thead class="table-light">
                <tr>
                    <th>ID</th>
                    <th>部门名称</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                {% for dp in dp_list %}
                    <tr>
                        <td>{{ dp.id }}</td>
                        <td>{{ dp.dp_name }}</td>
                        <td>
                            <a class="btn btn-primary btn-sm" href="/depart/{{ dp.id }}/edit">编辑</a>
                            <a class="btn btn-danger btn-sm" href="/depart/delete/?nid={{ dp.id }}">删除</a>
                        </td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>
        </div>
    </div>

    </div>
    </div>

{% endblock %}

 

2.depart_add.html

{#继承模板#}
{%  extends 'layout.html' %}

{% block content %}

        <div class="card mt-3">
            <div class="card-header">
        <span class="ml-2 text-sm font-weight-bold">
{#                    标签#}
                    <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor"
                         class="bi bi-plus-circle " viewBox="0 0 16 16">
                    <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
                    <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/>
                </svg>
                </span>
                <span class="ml-2 text-sm font-weight-bold"> 新增部门 </span>
            </div>
            <div class="card-body">

                <form class="row g-3 align-items-center" method="post">
                    {#            post 发送方式必须使用 #}
                    {% csrf_token %}
                    {% csrf_token %}
                    <div class="col text-end ">
                        <label>新增部门名称:</label>
                    </div>
                    <div class="col">
                        <input type="text" class="form-control" name="dep_name" placeholder="请输入..."/>
                    </div>
                    <div class="col">
                        <button type="submit" class="btn btn-primary">保 存</button>
                    </div>
                </form>
            </div>
        </div>


{% endblock %}

 

3.depart_edit.html

{#继承模板#}
{%  extends 'layout.html' %}

{% block content %}

        <div class="card mt-3">
            <div class="card-header">
        <span class="ml-2 text-sm font-weight-bold">
{#                    标签#}
                    <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" fill="currentColor"
                         class="bi bi-plus-circle " viewBox="0 0 16 16">
                    <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z"/>
                    <path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z"/>
                </svg>
                </span>
                <span class="ml-2 text-sm font-weight-bold"> 修改部门 </span>
            </div>
            <div class="card-body">

                <form class="row g-3 align-items-center" method="post">
                    {#            post 发送方式必须使用 #}
                    {% csrf_token %}
                    <div class="col text-end ">
                        <label>修改部门名称:</label>
                    </div>
                    <div class="col">
                        <input type="text" class="form-control" name="dep_name" value="{{ dp.dp_name }}"/>
                    </div>
                    <div class="col">
                        <button type="submit" class="btn btn-primary">保 存</button>
                    </div>
                </form>
            </div>
        </div>
{% endblock %}

 

四、配置路由表urls.py

from django.contrib import admin
from django.urls import path
from website import views   #  新增:从website 中导入 views


urlpatterns = [
    path('depart/list/', views.depart_list),  # 新增:路由
    path('depart/add/', views.depart_add),  # 新增:路由
    path('depart/delete/', views.depart_delete),  # 新增:路由
    path('depart/<int:nid>/edit/', views.depart_edit),  # 新增:路由
]

五、配置views.py

import requests
from django.shortcuts import render,redirect
from website import models  # 引入models 模块

# Create your views here.

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

    # '''在同一页面新增'''
    # if request.method == 'GET':
    #     return render(request, 'depart_list.html' , {'dp_list':dp_list})
    # else:
    #     dp_name = request.POST.get('dp_name')
    #     print(dp_name)
    #     models.Department.objects.create(dp_name=dp_name)
    #     return render(request, 'depart_list.html' , {'dp_list':dp_list})

def depart_add(request):
    '''添加部门'''
    if request.method == 'GET':
        return render(request, 'depart_add.html')
    else:
        depart_name = request.POST.get('dep_name')
        models.Department.objects.create(dp_name=depart_name)
        return redirect('/depart/list')


def depart_delete(request):
    '''删除部门'''
    nid = request.GET.get('nid')
    models.Department.objects.filter(id=nid).delete()
    return redirect('/depart/list')

def depart_edit(request,nid):
    '''删除部门'''
    if request.method == 'GET':
        row_dp = models.Department.objects.filter(id=nid).first()
        return render(request,'depart_edit.html',{'dp':row_dp})
    else:
        depart_name = request.POST.get('dep_name')
        models.Department.objects.filter(id=nid).update(dp_name=depart_name)
        return redirect('/depart/list')

 六、效果

 

 

 

 

 

 

 

 

 

posted @ 2023-05-05 23:52  luckylu1983  阅读(93)  评论(0)    收藏  举报