本文介绍: 本系统需要实现的板块比较多,为了方便各位能够更加轻松的学习,因为我们分多篇博客来将系统完善,希望能对各位学习有帮助。作者文化水平有限,如果出现绕口的话请原谅。本篇博客需要实现需求:1. 确定项目整体逻辑结构2. 创建Django项目3. 对Djiango项目中的各组件进行配置4. 对部门表进行创建以及构建部门信息页面

        本系统需要实现的板块比较多,为了方便各位能够更加轻松的学习,因为我们分多篇博客来将系统完善,希望能对各位的学习有帮助。作者文化水平有限,如果出现绕口的话请原谅。

本篇博客需要实现的需求

1. 确定项目整体逻辑结构 

2. 创建Django项目

3. 对Djiango项目中的各组件进行配置

4. 对部门表进行创建以及构建部门信息页面

需求实现:

1. 确定项目整体逻辑结构 

在本次项目中,我们需要一个网页帮助我们进行员工管理的实现,包括部门管理员工信息管理账号管理初步实现中我会依次实现这四个板块,后续对于整个系统的完善也会在后面的博文中给出。

2. 创建Django项目

1 确认项目启动路径

2 创建Django项目 输入命令djangoadmin startproject 项目名

3 cd 项目名

4 创建app 输入命令 python manage.py startapp APP名

5 输入命令 python manage.py runserver 即可启动Django项目

通过默认URL我们可以浏览器打开我们创建的Django页面(不能将我们上面的启动界面关闭) 

 出现以上界面代表你的Django项目成功创建

我们通过我们的Pycharm打开我们刚才创建的项目,请注意我下面的打开操作,不然后续对于代码运行可能存在问题

我们需要从你创建的地址下面的项目名进行打开,这样的好处就是你在运行整个Django项目时并不需要每次都输入python manage.py runserver

基本上是这个界面就代表你项目成功按照我的方式进行打开

点击右上角运行即可出现下面的运行效果

我们可以发现里面一个URL就是我们刚刚在上面进入网页地址,这样我们可以直接通过点击这个地址即可进入我们的Django网页界面。

3. 对Djiango项目中的各组件进行配置

接下来我们需要对我们的项目对各个组件进行一个基本的配置,后续我们根据需要会不断的进行配置。

APP的配置:打开setting.py进行app的配置

找到INSTALLED_APPS,在里面添加project_manage.apps.ProjectManageConfig’,这个其实就是我们的app类的路径

这样我们就可以将我们的app配置成功app如果配置不成功对于后续的数据库迁移操作就会产生影响,因此我们在进行配置项目组件时一定要注意对app的配置。

下面我们需要在app项目名所在的文件下创建两个文件夹用于我们后续存放我们的html代码以及js代码

static : 用于存放jscssimg内容

templates:用于存放html代码

 4 对部门表进行创建以及构建部门信息页面

下面是我们对部门表作的一个基本框架

1. 需要给一个URL地址用于展示部门信息 

2. 需要有一个导航栏用于用户各个内容进行操作

3. 需要有一个部门列表用于存放我们所有的部门信息并展示

4. 需要有一个新建部门用于创建一个新的部门

5. 能够对部门信息进行直接修改删除操作

4.1 为部门信息创建一个URL

找到url.py ,我们可以发现里面有一个path,这个里面存放内容其实就是我们开始打开Django项目时的那个火箭,我们可以在这个urlpatterns列表添加我们各个实现内容的url

这样我们即可成功添加员工列表的url地址接下来我们需要为实现这个内容构建方法,我们的方法构建都是在views.py里面进行的,因此我们需要导入views进来。

我们在views.py中创建这个方法,它会在用户跳转对应的地址时自动运行

我们的部门列表存放的是我们的部门信息数据,那这些数据都是从哪里来的?因此我们需要创建一个数据库用于存放我们数据。(在这里我们用的Mysql

4.2 数据展示操作

1. 在mysql里面创建一个数据库用于存放数据

2. 在setting.py 下对你的MySQL的数据库进行一个导入配置

3. 利用model.py 完成数据库迁移到Django项目中

4. 最后将我们得到的数据渲染到我们的部门界面中去

5 补充:数据的删除修改操作

4.21 使用mysql 创建数据库用于存放员工信息

4.22 在setting.py 下对你的MySQL的数据库进行一个导入配置

首先在setting里面找到DATABASES

然后按照下面进行MySQL配置

 4.23 利用model.py 完成数据库迁移到Django项目中

 编写一个员工列表类用于存放员工数据

 编写完成后开始进行数据的迁移

 依次输入 makemigrations 以及  migrate 即可完成数据的迁移

 通过pycharm连接数据库后我们可发现里面多出来了很多表,其中有一个表就是我们刚刚创建的Department 这个类所构成的表

 

其中的id是Django自动生成的一个id字段,是每一条数据的主键,后续我们进行数据的删除修改时经常会用到

由此我们对数据库的迁移以及全部完成。

4.24 渲染数据到页面

首先我们先人为的创建一些数据到数据库中去,方便后续查看

接下来我们需要创建一个html文件用于我们页面展示

这里推荐大家一个非常实用的html样式大全,非常实用,我的HTML代码基本上都是以这里面的做一个框架然后修改

Bootstrap v3 中文文档 · Bootstrap 是最受欢迎的 HTML、CSS 和 JavaScript 框架,用于开发响应布局移动设备优先的 WEB 项目。 | Bootstrap 中文网 (bootcss.com)icon-default.png?t=N7T8https://v3.bootcss.com/

使用步骤

1. 下载Bootstrap压缩包

2. 将下载 压缩包解压后将解压文件放入static文件

3. 下载jqueryjquery文件夹放入static文件下,用于html代码运行js代码

        jquery下载所有版本(实时更新) (jq22.com)

3. 将里面js样式进行导入到html文件中

我们通过我渲染出来的界面进行讲解

导航栏的创建

由于我们的导航栏是贯彻到每一个实现模块中去的,那我们干脆就将导航栏单独拿出来放入一个html文件中,其他的html文件使用时直接继承即可。

点击组件后选择导航

复制outerHTML即可获取它的html代码

 layout.html(导航栏代码)

{# 导入static文件夹 #}
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
</head>
<body>
<div class="navbar navbar-default">
    <div class="container">
        <!-- 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="http://127.0.0.1:8000/">管理系统</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><a href="/depart/list">部门列表</a></li>
                <li><a href="/user/list/">员工列表</a></li>
                <li><a href="/pretty/list/">账号管理</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="#">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 -->
</div>

<div>
    {#用于其他html代码进行代码复写#}
    {% block content %}
    {% endblock %}
</div>

{# 引入js代码 #}
<script src="{% static 'js/jquery-3.7.1.js' %}"></script>
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>

{% block js %}

{% endblock %}
</body>
</html>

我们只需要对其中的内容进行部分修改,我们就可以直接拿来用。我们将layout.html渲染出来的效果作为首页查看一些渲染情况。

url.py

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

urlpatterns = [
    # 这个没什么用我们直接注释
    # path('admin/', admin.site.urls),
    # 首页URL,路径为空表示初始界面
    path('', views.index),

    path('depart/list', views.depart_list),

]

views.py

from django.shortcuts import render

# Create your views here.
def index(request):
    render(request,'layout.html')


def depart_list(request):
    pass


最后运行打开即可出现下面的效果

 接下来我们完成部门列表的显示,我们在点击“部门列表”的时候它就会把所有部门信息都显示到界面上

 

views.py

from django.shortcuts import render
# 导入model模块
from project_manage import models

# Create your views here.
def index(request):
    render(request,'layout.html')


def depart_list(request):
    # 获取Department下的所有数据
    data_list = models.Department.objects.all()
    render(request,'depart_list.html',{'data_list':data_list})


 depart_list.html

{% extends 'layout.html' %}
{% block content %}
    <div class="container">
        <div style="margin-bottom: 10px">
            {# target="_blank" 重新打开一个页面 #}
            <a href="/depart/add/" class="btn btn-success">
                <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> 新建部门</a>
        </div>
        <div class="panel panel-success">
            <div class="panel-heading">
                <h3 class="panel-title"><span class="glyphicon glyphicon-th-list" aria-hidden="true"></span> 部门列表</h3>
            </div>
            <div class="panel-body">
                <table class="table">
                    <thead>
                    <tr>
                        <th>部门ID</th>
                        <th>部门名称</th>
                        <th>部门操作</th>
                    </tr>
                    </thead>
                    <tbody>
                    {% for data in data_list %}
                        <tr>
                            <td>{{ data.id }}</td>
                            <td>{{ data.title }}</td>
                            <td>
                                <a href="/depart/delete/?nid={{ data.id }}"><span
                                        class="glyphicon glyphicon-trash" aria-hidden="true" style="color: red"></span></a>
                                <span> </span>
                                <a href="/depart/{{ data.id }}/modify"><span
                                        class="glyphicon glyphicon-new-window" aria-hidden="true"
                                        style="color: #2aabd2"></span></a>
                            </td>
                        </tr>
                    {% endfor %}

                    </tbody>
                </table>
            </div>
        </div>
    </div>
{% endblock %}
4.25 数据的删除修改

数据展示完毕,接下来就是对数据的操作删除修改

上面我们提到每一条数据的id值都是它对应的主键,那么我们就可以通过id值找到对应的数据并进行相对于的操作

删除:

构造url,我们可以构造一个url为   ‘http://127.0.0.1:8000/depart/delete/?nid=1’ 表示id值为1的数据,其中的nid表示对应数据的id值,在这里面的nid是该url的参数,我们在对该url发起请求时可获取到对应的nid的值。

首先先为其创建一个url地址

urls.py

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

urlpatterns = [
    # 这个没什么用我们直接注释
    # path('admin/', admin.site.urls),
    # 首页URL,路径为空表示初始界面
    path('', views.index),

    path('depart/list', views.depart_list),

    path('depart/delete/', views.depart_delete),

]

views.py

# 删除部门
def depart_delete(request):
    # 从get请求中得到参数nid值
    nid = request.GET.get("nid")
    # 从数据库中筛选出id值为nid并删除
    models.Department.objects.filter(id=nid).delete()
    # 删除后重定向到部门列表
    return redirect("/depart/list")

由于删除操作并不需要重新做一个页面来进行展示,因此我们直接返回到原界面即可。

修改

修改操作和删除会有一点区别,删除操作仅仅只是一个get请求方法,因为它并不涉及到数据库的操作,因此调用方法就可完成。而修改操作在用户进行修改操作的时候是get请求方法,再另外一个页面做提交数据修改时则为post请求方法。

修改操作同样是根据数据的id值进行操作的,因此我们也需要构建出一个url地址,url地址并不唯一,只要保证整个操作的逻辑一致即可。为了展示效果,下面作者用了一个不同的url表示方法来进行修改操作

构造url:‘http://127.0.0.1:8000//depart/1/modify’  在这里的1就不像刚刚那个是作为参数传递,而是以路径的形式放入

urls.py:

    # 修改部门
    path('depart/<int:nid>/modify/', views.depart_modify),

views.py:

# 修改部门
def depart_modify(request, nid):
    # 如果是get请求
    if request.method == "GET":
        # 获取该id值对应的部门名
        title = models.Department.objects.filter(id=nid).first()
        return render(request, "depart_modify.html", {"title": title})
    
    # 如果是post请求
    title = request.POST.get("title")
    # 找到对应的id值更新
    models.Department.objects.filter(id=nid).update(title=title)
    return redirect("/depart/list")

depart_modify.html

{% extends 'layout.html' %}

{% block content %}
    <div class="container">
        <div class="panel panel-info">
            <div style="margin-bottom: 10px">
                {# target="_blank" 重新打开一个页面 #}
                <a href="/depart/list/" class="btn btn-success">
                    <span class="glyphicon glyphicon-log-out" aria-hidden="true"></span> 退出修改</a>
            </div>
            <div class="panel-heading">
                <h3 class="panel-title">修改部门</h3>
            </div>
            <div class="panel-body">
                <form method="post">
                    {% csrf_token %}
                    <div class="form-group">
                        <label for="inputEmail3" class="col-sm-2 control-label">部门名称</label>
                        <input type="text" class="form-control" id="inputEmail3" placeholder="{{ title.title }}"
                               name="title">
                    </div>

                    <button type="submit" class="btn btn-success">提交</button>


                </form>
            </div>
        </div>
    </div>
{% endblock %}
4.3 新增部门

我们需要在部门列表上面弄一个新建部门的按钮,在用户进行添加操作时可以由这个按钮进入,并在里面弄一个超链接,在用户点击后即可跳转到部门添加页面。

新增部门与修改部门信息的操作其实是差不多的,都是有get请求和post请求两种请求方式。用户在点击新增部门的按钮是一个get请求方式,在提交数据时是一个post请求方式,因为提交数据涉及到数据库的操作 。

urls.py

    # 增加部门
    path('depart/add/', views.depart_add),

views.py:

# 修改部门
def depart_modify(request, nid):
    # 如果是get请求
    if request.method == "GET":
        # 获取该id值对应的部门名
        title = models.Department.objects.filter(id=nid).first()
        return render(request, "depart_modify.html", {"title": title})

    # 如果是post请求
    title = request.POST.get("title")
    # 找到对应的id值更新
    models.Department.objects.filter(id=nid).update(title=title)
    return redirect("/depart/list")

depart_modify.html

{% extends 'layout.html' %}

{% block content %}
    <div class="container">
        <div class="panel panel-info">
            <div style="margin-bottom: 10px">
                {# target="_blank" 重新打开一个页面 #}
                <a href="/depart/list/" class="btn btn-success">
                    <span class="glyphicon glyphicon-log-out" aria-hidden="true"></span> 退出修改</a>
            </div>
            <div class="panel-heading">
                <h3 class="panel-title">修改部门</h3>
            </div>
            <div class="panel-body">
                <form method="post">
                    {% csrf_token %}
                    <div class="form-group">
                        <label for="inputEmail3" class="col-sm-2 control-label">部门名称</label>
                        <input type="text" class="form-control" id="inputEmail3" placeholder="{{ title.title }}"
                               name="title">
                    </div>

                    <button type="submit" class="btn btn-success">提交</button>


                </form>
            </div>
        </div>
    </div>
{% endblock %}

 以上就是部门列表的整个操作流程

由于代码内容过多,不太好全部展示,等后续我会在GitHub上将所有代码都放入的哈。本文中如果存在问题或者读友有模糊的地方可以评论留言或者私信

原文地址:https://blog.csdn.net/m0_71494659/article/details/134613471

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_44002.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注