Wagtail:如何验证用户是否可以访问模板中的页面

问题描述 投票:0回答:1

我正在使用带有Wagtail的Django]创建一个个人网站,其中属于不同组的用户可以访问某些页面。例如,家庭小组可以看到我的假期照片,而同事小组可以看到一些内部文档。

通过管理员设置权限访问权限非常简单。但是,我想在forbidden

页面的链接旁边显示一个锁。这将使用户非常清楚哪些链接可以被跟踪,哪些链接不能被跟踪。

是否有任何方法可以验证当前用户是否有权访问给定页面?

我正在使用带Wagtail的Django创建个人网站,属于不同组的用户可以在其中访问某些页面。例如,家庭小组可以看到我的假期照片,而合作伙伴可以看到我的假期照片。

[摆弄Wagtail的代码后,我发现权限是通过称为PageViewRestriction的模型处理的(code非常简洁明了),该模型又继承了BaseViewRestriction,该模型定义了方法[C0 ]。由于要引用的页面存储在模型中,因此唯一缺少的部分是用户请求访问。
这样,我设法将一个非常简单的模板标记放在一起,该标记用于检查当前用户是否可以看到给定的页面。过滤器如下所示:
accept_request

反过来,我在模板中这样使用:

@register.simple_tag(takes_context=True) def can_view(context, page): pvrs = PageViewRestriction.objects.filter(page=page) request = context['request'] if pvrs: for pvr in pvrs: if pvr.accept_request(request): return True return False return True

请注意,原则上一个页面可以指定多个不同的权限。例如,不同组的成员可以查看它。我假设如果当前用户属于这些组之一,或者该页面未指定查看权限,则该用户可以访问该页面。 
django templates permissions wagtail
1个回答
0
投票
accept_request
© www.soinside.com 2019 - 2024. All rights reserved.