python django项目进度管理平台

开发日志:

2020.10.19:https://blog.csdn.net/qq_36780295/article/details/109159944
(配置Django,创建一个简单的网页)

2020.10.20:https://blog.csdn.net/qq_36780295/article/details/109165967
(html学习整理,部署到局域网,使用Bootstrap)

2020.10.27:https://blog.csdn.net/qq_36780295/article/details/109195710
(简单的登录实现、在数据库中创建表格)

2020.11.2:https://blog.csdn.net/qq_36780295/article/details/109330941
(表查询实现注册和登录,数据库查找数据加载到前端显示,日常报错)

2020.11.3:https://blog.csdn.net/qq_36780295/article/details/109454195
(html中table表格使用,添加滑动条和固定表头,js实现下拉复选框)

2020.11.6:https://blog.csdn.net/qq_36780295/article/details/109484541
(input不显示提示信息,日历,datetime类型数据的显示,使用装饰器实现登录限制,文字下划线)

2020.11.11:https://blog.csdn.net/qq_36780295/article/details/109537494
(html中使用if.else,提交表单不改变下拉框已选值,数据库增删改查,外键,div边角变圆,数据库倒序查找及显示,日期选择组件参数赋值)

2020.11.12:https://blog.csdn.net/qq_36780295/article/details/109642293
(template中循环计数forloop.counter,数据库查找出的数据经过计算后和原数据或数组一起显示)

我做了哪些:

html前端+django后端

表结构:

用户表: 存储了用户的用户名、密码、姓名(姓名会加载到所有的选择负责人下拉框和选择参与人的下拉复选框中)。

项目表: 存储了项目的名称、负责人、参与人、创建日期时间(datetime系统自动获取)、项目周期、项目紧急等级、剩余天数(留存空字段,为了解决问题而留,下面写了)

进度提交表: 存储了项目名称、提交人(通过request.session标记获取)、提交时日期时间(datetime系统自动获取当前时间日期)、提交进度、备注。

功能页

1、登录页面、注册页面、退出登录功能:
(1)创建了用户表,注册时将用户的用户名、密码、姓名插入该表,并在登陆时与用户信息进行比对。
(2)request.session会话标记当前用户,以实现不同用户的一些不同操作和显示的参数,在所有的页面中记录登录用户的状态。
(3)结合request.session使用装饰器编写登录验证(不登陆无法访问某些网页,自动跳转到登陆页面进行登录)

2、管理员管理页面:
(1)除了链接创建项目,包含一些数据库的基本使用,根据列表上方的下拉框选择的创建日期(与创建日期datetime的date部分比较),下拉选择负责人,下拉选择项目名称,查看已提交的进度日志,点击查询,结果会按照进度表中的条件查找查找结果,然后显示在表格中。
(2)项目列表并显示紧急程度,由于只设定了三个紧急等级,所以对数据库查找的对象进行三次轮询,将每个等级的各个项目放在该紧急分级下,使用bootstrap中的list-group-item显示,并使用该组件对应的danger、success、warning三个状态对三个紧急程度等级的项目进行着色。
(3)天气预报通过divsrc链接的外部网页,不作说明。日历的代码通过前端与javascript结合实现,代码来自大佬,自己同样做了一些修改。
(4)最近更新中用作消息提醒,通过根据提交时间倒序读取进度提交表中的数据,以xxx(姓名)在xxx(日期时间)提交了xxx(项目名称)的进度为格式对管理员进度更新的提醒。
(5)项目详情中列出了所有的项目,即从项目表中查询出的所有信息,最后又加了一列剩余天数,通过查询出的项目周期加上项目创建时间,再减去当天日期得到,怎样把剩余天数显示出来我费了一番脑筋。
(6)显示的数据: 其中除了查询按钮查询进度日志,其他表格数据都是预加载。后端路由关联的函数中,在表单get和post之前就将数据库的数据加载,然后在表单载入时返回locals()来加载数据。

3、创建项目页面:
(1)创建了项目表,管理员创建项目以后会在项目表中插入一条记录,包含管理员选择的项目的一些信息:项目名称,下拉框选择项目负责人,选择输入项目周期(type=number),下拉复选框选择参与人(插入数据时自动过滤最后的逗号),自动获取系统当前的日期时间(以datetime存储到数据库)下拉框选择项目的紧急程度。(负责人和参与人下拉内容是读取的用户表中的姓名,与创建用户时所输入的姓名对应)

4、普通用户页面:
(1)有一部分与管理员页面类似,布局上做了一些修改,增加了进度提交区域,日历、天气、提交进度查询、项目详情等都类似,提交进度处,通过下拉框选择项目(项目表中已存在的项目),然后填写进度和备注,点击提交,然后将项目名称、提交人(request.session标记获取)、提交时间(自动获取当前时间)、提交进度、备注插入到进度提交表中。

遇到的问题:

(1)点击按钮,表单提交,导致页面刷新,之前下拉框和日期选择组件选择内容也被刷新。
(2)想要把计算后的数据和数据库中查询出来的内容一起显示,比如在数据库中查询出来的数据中增加一列剩余天数。一开始想用数组存储算好的天数,然后用循环来做,但是template里面不支持range,后来想用forloop.counter做数组下标,但是这样就变成了参数中加参数:{{create_items.{{forloop.counter}} }},很可惜,报错了。后来又想着用两个表拼接,一张表查数据库,一张表显示数组,但是当页面被缩放时就会显示不正常。想要模拟创建临时表(实际是想创建字典并添加键值对)进行外键的关联,实验了好多次的代码都没有成功。想要通过js来实现,由于查询的数据我也不知道有多少条,不太清楚怎样去实现就放弃了。
(3)datetime数据类型的相关处理计算(相减结果为datetime.timedelta型,而非int型)和正常显示(显示时需要转换格式)
(4)下拉复选框无法正常勾选和返回结果的解析。
(5)直接登入网页预加载数据正常显示,而登录跳转到该页面就不正常显示。

解决方案:
(1)在后端保存上一次下拉框选择结果,然后在提交表单后再将这个保存的结果提交给前端。这是笨办法,后面了解到可以用ajax来做。
(2)我在显示的表里面有创建了一个新的字段(假设为字段a1),字段中不显示任何内容,插入数据时也插入为空,然后将计算好的数值使用循环依次放到接收数据库查询内容的对象的a1属性内,然后在前端就可以和该对象的其他属性一样用了。
(3)datetime.timedelta型转int只需在后面加上.days,关于正常显示解决方法见上方开发日志,里面有说明。
(4)下拉复选框的代码来自大佬,由于去除勾选无法正确删去内容,自己在javascript中增加了定位函数,然后增删就正确了。关于解析,由于下拉复选框选择以后将勾选项相连,使用逗号相隔,所以在创建项目存储时我舍弃了最后一个逗号,在使用时通过逗号来定位,截取每一个选项放到数组中,以此来调用。
(5)在登陆页面也对数据库中查询的数据进行加载。

界面

登录注册和创建项目等由于做的比较丑,所以页面就没放了,该有的功能基本实现了,创建项目,提交日志,查看项目,查看日志,最近更新,项目分级等。由于刚刚学习Django不久,看了半天代码就直接上手,边做边学,所以还是比较吃力,最主要的还是自己太菜。开发过程学到非常多的东西,也克服了很多开发时遇到的问题。之后有时间会对界面进行美化和功能的增加,希望以后能自己做一个自己的网站吧,把我学会的东西都放上去。

管理员查看项目和创建项目页面:
在这里插入图片描述

普通用户查看项目和提交日志页面:

在这里插入图片描述

更新于2021-3-17:

学了一段时间,最近又把这个找了出来,对所有的界面进行了一个重写,加了一些特效,感觉看起来应该比原来好多了吧。

(1)登录页面:

在这里插入图片描述

(2)注册页面:

在这里插入图片描述

(3)负责人账号页面:

由于设置了background-attachment:fixed;background-repeat:no-repeat;,浏览网页时显示是正常的,但是用360浏览器截取时,下面半部分就有一大片空白,所以我直接把下半部分截到的有空白的去掉了。
在这里插入图片描述

(4)参与人项目进度提交界面:

在这里插入图片描述

(5)创建项目页面:

在这里插入图片描述
其他增加的一些特效截不出来,比如下雪特效,跟随鼠标的线的特效,不过这些代码网上已经很多了,就不做说明了。界面上该有的功能之前就都做好了,所以后端部分也没有去做任何的修改。

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
课程源码Gitee地址,码云搜索:IT教头王进 -  bugmgr_demo合适人群: 1、具有一定Python语言基础,有一定的web前端基础,想要深入学习Python Web开发的朋友;2、学习完“跟着王进老师学开发Python篇”、“跟着王进老师学Web前端开发”的朋友;3、有Django框架基础,但是想学习企业级项目实战的朋友;4、喜欢Python编程并想深入研究的朋友;本项目为Bug追踪管理系统,在企业中各种项目提供了Bug的记录、跟踪、解决和统计的功能,另外还提供了wiki的知识库和在线的文档管理等等。编程无捷径,需要大量案例讲解与实战运用;杜绝纸上谈兵,杜绝“忽悠速成”,本课程为Bug追踪管理系统的第一阶段:登陆模块。◆ 在登陆模块中,包含了用户注册、用户账号登陆、手机验证码登陆、用户重置密码四个功能点。◆ 在登陆模块中,使用到了很多知识点,比如:virtualenv虚拟环境、Git和Gitee、ORM模型、Django模板继承、Redis数据库等等,如下图:本课程从0开始完成这个项目,代码全部手工完成,实战性很强。希望所有的同学能好好跟着视频理解每个知识点,动手敲代码。完成本课程!学完本套课程之后您将收获:1、轻松玩转Python。2、快速掌握Python的知识体系。3、逐步养成自己的编程思维和编程感觉。4、快速胜任Python工程师的工作。5、Offer与机遇

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值