django user_passes_test:返回False或引发PermissionDenied是否更好?

时间:2019-06-20 11:33:10

标签: python django django-views

根据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的逻辑

有人会建议哪种方法最好吗?

0 个答案:

没有答案