Django_注册全局消息

需求:

  对于登录用户,无论他在哪个页面,我都需要给他全局发送一个消息提示,Django中request就是一个全局变量

那,如何做?

  1.  在models 中urser表,继承user的表类中写上一个函数,用于统计或者查询出要通知的消息类,然后通过request.user.方法获得所需要的值
    class UserProfile(AbstractUser):
        nick_name = models.CharField(max_length=50, verbose_name=u'昵称', default=u'')
        birthday = models.DateField(verbose_name=u'生日', null=True, blank=True)
        gender = models.CharField(max_length=6, choices=(('male', u'男'), ('female', u'女')), default='female')
        address = models.CharField(max_length=100, default=u'', verbose_name=u'用户地址')
        mobile = models.CharField(max_length=11, null=True, blank=True)
        # 图片存储为图片路径
        image = models.ImageField(upload_to='image/%Y/%m', default=u'image/default.png')
        add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
        
        class Meta:
            verbose_name = u'用户信息'
            verbose_name_plural = verbose_name
        
        def get_message_nums(self):
            """获取所有未读消息条数"""
            from operation.models import UserMessage
            return UserMessage.objects.filter(user=self.id, has_read=0).count()
  2. 在template中,通过request.user.get_message_nums方法获取值,所有的页面都可以获取request中值,因为在每个view都需要接收request参数和传递request参数
    <a href="{% url 'user:message' %}" {% if not request.user.get_message_nums %} style="display: none" {% endif %} >
      <div class="msg-num"><span id="MsgNum"> {{ request.user.get_message_nums }} </span></div>
    </a>
    

      

原文地址:https://www.cnblogs.com/2bjiujiu/p/7462994.html