Skip to main content
 首页 » 编程设计

python之Django之装饰器和错误信息

2025年05月04日24lexus

这似乎是一个简单的问题,但我似乎找不到简单的答案。 Django 似乎提供了一种非常简单的方法来使用所需的权限或需要登录的装饰器来限制对位置的访问,但我无法从 Django 文档中看到如何传递错误消息(可能使用消息框架)。如果我必须推出自己的装饰器来执行此操作,那么 django 装饰器的意义何在?他们只是不显示任何错误消息吗?

请您参考如下方法:

我认为您将安全性和权限与 Django 的身份验证系统混为一谈。在大多数情况下,Django 的工具主要设计用于将用户分为两组:经过身份验证(已登录)和匿名。这对 90% 的网站都有意义,因为您实际上不需要太多差异化(对于隐藏的管理员可能是另一个差异化,但这是一种边缘情况,而不是常态)。

permission_required 装饰器是一个非常简单的钩子(Hook),用于希望将没有权限的人重定向到登录页面的人。但是,在某些时候,这还不够。如果您需要特定权限而用户没有,将他们重定向到登录页面如何帮助他们?

在这种情况下,使用特定错误的消息来滚动您自己的装饰器非常容易。一个这样的例子:

def user_has_permissions(method): 
    return user_passes_test(lambda u: u.has_perm('my_permission'), login_url='/permission-denied/')(method)