Django实战-Signals 信号量

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

django的signal结合contenttypes可以实现好友最新动态,新鲜事,消息通知等功能。这个功能在用户发生某个动作的时候将其记录下来或者附加某些操作,比如通知好友。要实现这种功能可以在动作发生的代码里实现,也可以通过数据库触发器等实现,但在django中,可以使用signals。

记录每个操作,同时还能追踪到这个操作的具体动作:

用信号机制,监听信号,实现对信号的响应函数,在响应函数中记录发生的动作。

为了能追踪到操作的具体动作,必须从这张表中得到相应操作的model,这就得用ContentType。

在新鲜事这个功能上,使用GenericRelation来产生一个特殊的外键,它不像models.ForeignKey那样,必须指定一个Model来作为它指向的对象,GenericRelation可以指向任何Model对象。

只要model中有object的保存操作,都将执行post_post_save函数,可以在这个接受函数中实现通知好友等功能。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191016A002CK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励