python - LoginRequiredMixin 的反面是什么,如何拒绝登录用户的访问?

标签 python django

例如,如果用户已经登录,我不想授予对“注册” 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/

相关文章:

python - 按月和年对 .csv 中的数据进行排序并计算平均值

python - Boto3 ClientMethods 说明

Python 请求获取 ('Connection aborted.' , BadStatusLine ("' '",)) 错误

python - django paypal paypalrestsdk - 如何执行付款?没有返回 HttpResponse 对象

python - 一个 numpy 数组的质心,如何减少冗长?

python - MismatchingStateError:mismatching_state:CSRF警告!国家的请求和回应不平等

python - Django 基于类的 CreateView 中的表单集

python - Visual Studio 2019 找不到 python 测试(pytest 或 unittest)

python - Django最佳用户模型设计

python - 将 Django root 重定向到管理面板