根据django文档,我们可以简单地使用user_passes_test
装饰器来管理对给定视图的访问。
所调用的函数应根据测试结果返回True或False。
现在,我只是想在测试失败时引发403 HTTP错误。
选项1
如果我遵循文档逻辑,则应该:
@user_passes_test(func, login_url='/errors/403')
def permission_denied(request):
raise PermissionDenied
urlpatterns
中的urls.py
:path('errors/403', views.permission_denied, name="error_403"),
选项2
只需在测试函数中使用raise PermissionDenied
而不是返回False
(无需查看和更改或urls.py
)
就代码的可读性而言,第二个选项似乎是 cleaner 。
但是,它破坏了django的逻辑。
有人会建议哪种方法最好吗?