Django Grappelli 用户组条件仪表板

Posted

技术标签:

【中文标题】Django Grappelli 用户组条件仪表板【英文标题】:Django Grappelli usergroup conditional dashboard 【发布时间】:2018-07-25 13:13:26 【问题描述】:

在 Django(1.11.10) 中使用 Grappelli(2.11.1)。 我制作了小型自定义仪表板,现在寻找一些方法来改变元素的外观。 特别是我需要显示一些 url 元素

self.children.append(modules.LinkList(
    _('e-mail'),
    column=2,
    css_class=('grp-collapse grp-closed'),
    children=[
        
            'title': _('gmail'),
            'url': 'gmail.com',
            'external': True,
        ,
    ]
))

仅对指定组的用户和对其他人隐藏。 以常规方式,我会尝试使用 auth.get_user(),但这取决于“请求”。这对我来说是不可用的,或者至少是不可见的。 有什么办法可以实现这个功能? 还是谢谢。

【问题讨论】:

【参考方案1】:

一种可能的解决方法(尽管几乎可以肯定有更好的方法):

首先,将'django.template.context_processors.request' 添加到settings.TEMPLATES['OPTIONS']['context_processors'](如果它不存在)。这会将请求添加到模板上下文。

接下来,在 init_with_context 方法中对自定义仪表板进行更改,您现在可以访问请求(以及 request.user)

from grappelli.dashboard import modules, Dashboard

class CustomDashboard(Dashboard):

    def init_with_context(self, context):
      request = context['request']
      user = request.user
      groups = user.groups.all()
      if groups == "whatever condition you want":
        self.children.append(
            ...
        )

【讨论】:

是的。我在仪表板脚本中获得了用户对象。谢谢。

以上是关于Django Grappelli 用户组条件仪表板的主要内容,如果未能解决你的问题,请参考以下文章

当添加权限为 False 时,Django-grappelli 添加按钮在内联中可见

django admin 1.7 + django-grappelli 2.6.1 中的 jQuery datepicker 本地化

Django-Grappelli:“grp_related_lookup”的反向参数“()”和关键字参数“”未找到

Python Django管理后台美化

Django表单用户表单未登顶

在 django 中构建仪表板