accept_request
我正在使用带有Wagtail的Django]创建一个个人网站,其中属于不同组的用户可以访问某些页面。例如,家庭小组可以看到我的假期照片,而同事小组可以看到一些内部文档。
通过管理员设置权限访问权限非常简单。但是,我想在forbidden
页面的链接旁边显示一个锁。这将使用户非常清楚哪些链接可以被跟踪,哪些链接不能被跟踪。是否有任何方法可以验证当前用户是否有权访问给定页面?
我正在使用带Wagtail的Django创建个人网站,属于不同组的用户可以在其中访问某些页面。例如,家庭小组可以看到我的假期照片,而合作伙伴可以看到我的假期照片。
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
请注意,原则上一个页面可以指定多个不同的权限。例如,不同组的成员可以查看它。我假设如果当前用户属于这些组之一,或者该页面未指定查看权限,则该用户可以访问该页面。
accept_request