需求:
对于登录用户,无论他在哪个页面,我都需要给他全局发送一个消息提示,Django中request就是一个全局变量
那,如何做?
- 在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()
- 在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>