允许仅非登录用户访问Django
在Django中,我该如何防止已登录的用户访问某些页面呢?比如登录页面和注册页面。我想让已登录的用户无法进入登录和注册的页面。
一种方法是自己写一个登录的视图,在这个视图中检查用户是否已经登录,如果已经登录,就把他重定向到其他页面。
有没有更好的方法来实现这个呢?比如使用某种装饰器?
相关问题:
1 个回答
4
看看这个叫做 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 object)。这个函数必须返回一个布尔值(true 或 false),用来判断是否应该执行这个视图(view)。
如果你不是用用户对象来验证用户,那你就需要自己写一个装饰器。