在django中,如何防止某些页面显示给登录用户。例如登录页面,注册页面。这是我想阻止登录用户访问登录和注册页面。
这样做的一种方法是编写我自己的登录视图,并在该视图中检查用户是否已登录,如果是,则重定向到其他页面。
有没有更好的方法来实现这一目标?像一些装饰师?
答案 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对象对用户进行身份验证,那么您必须编写自己的装饰器。