仅允许访问django中的未登录用户

时间:2014-04-27 17:48:19

标签: python django

在django中,如何防止某些页面显示给登录用户。例如登录页面,注册页面。这是我想阻止登录用户访问登录和注册页面。

这样做的一种方法是编写我自己的登录视图,并在该视图中检查用户是否已登录,如果是,则重定向到其他页面。

有没有更好的方法来实现这一目标?像一些装饰师?

1 个答案:

答案 0 :(得分:3)

查看user_passes_test装饰器。

您可以这样做:

from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: not u.is_authenticated())
def my_view(request):
    ...

user_passes_test收到一个函数。该函数接收User对象的位置。该函数必须返回一个bool来确定是否应该执行该视图。

如果您没有使用User对象对用户进行身份验证,那么您必须编写自己的装饰器。