通用视图类获取用户的信息,增加额外的上下文内容。

最近才上手通过类的方式编写views.py,遇到一个小问题。

做django网站开发的时候,根据不同的用户级别,头部导航栏有不同的功能,需要通过登录的用户信息确定加载哪些导航栏内容,这里换一种方式,使用类来写views.py。目标很明确,获取当前用户的登录信息。开始上代码:
views.py:

class CommentNoticeListView(LoginRequiredMixin, ListView):
    # 上下文的名称context
    context_object_name = 'notices'
    # 模板位置
    template_name = 'notice/list.html'
    # 登录重定向
    login_url = '/account/login/'

    # 未读通知的查询集
    def get_queryset(self):
        return self.request.user.notifications.unread()

    def get_context_data(self, **kwargs):
        context = super(CommentNoticeListView, self).get_context_data(**kwargs)
        user = User.objects.get(username=self.request.user.username)
        userinfo_all = UserInfo.objects.get(user=user)
        context['userinfo_all'] = userinfo_all
        return context

说明:

  1. 与通常写的视图函数一样,需要利用context上下文内容在前端进行显示,类中默认的是当前的,我们需要自己加载其他的上下文内容,比如上面说的当前用户信息。这里需要重写一个方法get_context_data。
  2. context = super(CommentNoticeListView, self).get_context_data(**kwargs)这一行必须要有,拿到原来的方法。
  3. 下面这两行内容就是我获取当前用户信息的代码,和平常写的一样,利用request方法来实现。我这里有两个表,第一个是user表,django自带的,第二个是userInfo,自己增加的一些用户额外信息,我都目标是要使用userInfo里面的userClass字段,找到用户角色来进行导航栏的加载,这里得到的userinfo_all就是当前用户的所有信息。
user = User.objects.get(username=self.request.user.username)
        userinfo_all = UserInfo.objects.get(user=user)
  1. context['userinfo_all'] = userinfo_all放入额外的上下文内容,再返回context,这时候就可以直接在前端利用{{ userinfo_all.属性名 }}的方式进行调用了,我这里是{{userinfo_all.userclass}}确定当前用户角色。
    搞定。
    参考链接:https://blog.csdn.net/mikezhou002/article/details/81293293
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值