例如,如果用户已经登录,我不想授予对“注册” View 的访问权限?
我在每个 View 的顶部使用它,效果很好:
def get(self, request, *args, **kwargs):
if request.user.is_authenticated():
return HttpResponseRedirect('/')
return super(MyCBV_vw, self).get(request, *args, **kwargs)
但是也许有一个装饰器 o mixin 可以做到这一点,我想知道是否有更好的方法来做到这一点?谢谢!
最佳答案
Django 有一个 user_passes_test
我认为这就是你所需要的装饰器。装饰器采用一个函数(以及其他可选函数)作为参数。
您可以编写此函数来重定向所有尝试访问该 View 的登录用户:
from django.contrib.auth.decorators import user_passes_test
def not_logged_in(user):
return not user.is_authenticated()
@user_passes_test(not_logged_in)
def my_view(request, *args, **kwargs):
# your code
记住使用 method_decorator
将此装饰器应用于您的 get
方法。
关于python - LoginRequiredMixin 的反面是什么,如何拒绝登录用户的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38274769/