【问题标题】:Django user permission inside template模板内的Django用户权限
【发布时间】:2016-10-06 20:38:06
【问题描述】:

我通过管理站点在 django 中创建了一个自定义身份验证权限,并将该权限添加到用户(不是组),现在我想询问模板中的请求用户是否有它但没有任何作用。它不是重复,我已经检查了类似的问题,但没有一个工作:

{% if perms.auth.add_something %}

{% if 'auth.add_something' in request.user.get_all_permissions %}

{% if request.user.has_perm('add_something') %}

我添加我的观点:

class NotificationSelectView(View):

    template = 'myapp/notification_read.html'

    def get(self, request, *args, **kwargs):
        t = tree(request)
        req_var_list = []
        analist = notifications_list(request.user)
        level = LevelProcess.objects.get(
            level_hierarchical = 3
        )
        subprocess= Process.objects.filter(level = level)
        user = request.user
        t.update({
           'subprocess': subprocess,
           'analist':analist,
        })
        return render(request, self.template, t)

它的想法是让它在模板中,而不是在视图中使用更多代码。 有什么想法吗?提前谢谢。

【问题讨论】:

  • 展示你的观点。特别是这个烫发是从哪里来的?
  • 我通过管理站点创建了一个权限,它属于 auth,但我不知道为什么它不起作用,我的视图根本没有提到 perms 它只是分配给特定用户也通过管理网站。
  • @e4c5 好吧,我刚刚添加了它
  • @jsanchezs 确保您的设置中有这个上下文处理器:django.contrib.auth.context_processors.auth

标签: django django-permissions


【解决方案1】:

django 在模板中它使用变量 perms 来获取登录用户的权限,因此您可以在模板中使用

{% if perms.auth.add_something %}
 {{do_smth}}
{% endif %}

在 django 文档中有一个部分 Authentication data in templates 也描述了模板中的权限

【讨论】:

  • 感谢您的回答,也试过了,但也不起作用...我必须从视图中发送一些东西才能做到这一点吗?
  • 为了使用自定义烫发,您还可以阅读此答案stackoverflow.com/a/1876447/924300
猜你喜欢
  • 2014-05-23
  • 2012-03-17
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 2015-04-21
  • 2013-12-26
  • 2018-04-10
  • 2017-06-11
相关资源
最近更新 更多