栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

Django - 边学Django边写毕业设计(day12 星标、申请加入团队、消息列表)

Python 更新时间:发布时间: 百科书网 趣学号
2021.10.4 1.写星标

点击星标设置或取消。

  1. 为包含星星图标的a标签添加href
  2. 在urls.py为星标创建一个新url,url包含参数str字符串类型的project_type和int类型的project_id。
path('set_star///', views.set_star, name='set_star')
  1. 视图函数就得多两个参数接收
def set_star(request, project_type, project_id):
  1. 在html中就得记得传参

  1. project_type是用来区分:星标我创建的、星标我参与的、我创建的、我参与的,这样传到视图函数时,就不用再判断是什么类型的项目了,直接从数据库中查找更新.update(is_star=True)

来自武Sir的提醒:为了避免坏分子通过url修改其他人的星标,在视图函数中查找的时候,filter多加一个当前登录用户id的条件。

2. 申请加入与消息列表

申请加入

  1. 做申请加入按钮,就得做消息列表,做消息列表就得先做消息表数据库。
  2. 先写一个消息的模型类,若想要两个字段同时关联同一个外键,就必须加related_name,否则会报错,related_name用于反向查找。
  3. search视图函数只用了get,我们利用好它,将通过POST向search提交申请

用ajax提交表单,
自动序列化只需在data: $(‘定位到form’).serialize(),
手动序列化时需在字典中添加一条csrf_token的数据,
这边手动序列化是以为要把申请人,接收人,项目id一起传到视图函数。

csrfmiddlewaretoken:'{{ csrf_token }}',

否则会出现Forbidden (CSRF token missing or incorrect.)
因为自动序列化的时候,它帮我们添加进去了。

  1. 注意:ajax发过来的字典值都是str类型,需要int类型需手动强转一下
  2. 申请加入按钮事件写完了,数据也可以存到数据库中,接下来是消息显示。

消息显示

  1. 想到消息显示时,我才发现好多表同样也需要时间字段,我就都加上了,文档里都有,就直接扣过来了。

  2. 当样式使用float时,位置会被占用,所以在使用float的元素外面套一层
xxx
  1. 点击同意或拒绝要做哪些动作:

只要进来了,就把该消息设置read为True,所以要传消息id
判断是同意还是拒绝,所以要传同意还是拒绝的标识

如果为同意,则增加一条项目成员表的数据,项目人数+1,并在消息表添加一条同意的消息(同意/拒绝写在content里)发给申请者;

如果为拒绝,则直接在消息列表添加一条拒绝消息发给申请者
同意和拒绝判断之前再加个消息类型判断,申请和邀请的同意时,增加项目成员的数据user_id是不一样的

我敲!好像传个消息id和是否同意就可以了!我在搞什么东西啊!重改一下,我像个睿智。。。
传那么多东西是没必要的,但是后台做的数据操作都是必要的。

  1. 在申请加入中,多加了一个判断,如果已存在该团队,返回False,阻止重复申请。
    10.添加了忽略消息按钮,即将该消息设置为已读,不在消息列表中显示。
3.明天测试一下各项功能,补漏BUG,今天写了挺多。
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号