Django 规则的问题



我正在使用 Django 的规则库,我没有克服为特定菜单定义规则。

规则库

在那里可用:规则库

我在我的 Web 应用程序中以admin身份登录。

我有一个这样的 menus.py 文件:

class AdminMenuItem(MenuItem):
    def check(self, request):
        return self.allow(request.user)
    @staticmethod
    def allow(user):
        return user.has_perm('app.access_admin_menu')
Menu.add_item('admin', MenuItem('Admin', '#admin', children=settings_children,
                            check=lambda request: AdminMenuItem.allow(request.user)))
settings_children = (
    ...
    AdminMenuItem("Manage Animals", reverse("animal-list-crud"), weight=10),
    AdminMenuItem("Statistics", reverse("statistics"), weight=140)
)

然后我在 rules.py 文件中定义:

from rules.permissions import add_perm
from rules.predicates import predicate

@predicate
def is_admin(user):
    if user.is_anonymous:
        return False
    return True if user.profile.type == 'ED' and user.profile.role == 'AD' else False
# Rules for admin_menu.
add_perm('app.access_admin_menu', is_admin)
# Rules for animal.
add_perm('app.view_animal', is_admin)
add_perm('app.add_animal', is_admin)
add_perm('app.change_animal', is_admin)
add_perm('app.delete_animal', is_admin)

它适用于动物菜单(它是 CRUD 部分(。但是当我尝试访问统计信息部分(不是 CRUD(时,我有一个错误403 Access forbidden.

我忘记了代码中的某些内容?

谢谢

我找到了解决方案。上面公开的代码很好,但它在我的 main.py 代码中遗漏了一些东西。

class StatisticsView(PermissionRequiredMixin, View):
    """ Render the statistics page with a form to generate various stats """
    permission_required = 'app.access_statistics'
    ...

在我的课堂上,我忘记了属性PermissionRequiredMixinpermission_required = 'app.access_statistics'.通过添加这两个元素,它现在可以工作了!

相关内容

  • 没有找到相关文章

最新更新