如何将访问者重定向到登录页面?

时间:2015-10-26 13:04:04

标签: python django

我的主Django项目urls.py中有以下url处理程序:

url(r'^$', 'core.views.generic.index')

我没有像上面那样登陆索引页面,而是希望用户登陆登录页面。

我在名为urls.py的应用中有另一个core,它将访问者发送到登录页面:

url(r'^/login$', private.MeLogin.as_view())

如何将我的主应用中访问url(r'^$', ...)的所有人发送到我核心应用中的private.MeLogin.as_view()

修改

我尝试了以下内容,

def index(request):
    return HttpResponseRedirect('/#/login')

但我知道这个页面有一个重定向循环

2 个答案:

答案 0 :(得分:4)

解决这个问题的方法是使用装饰器,在本例中为login_required。 Django documentation

from django.contrib.auth.decorators import login_required


@login_required
def index(request):
    index view code in here

这样做会将您重定向到您的登录视图。 如文档中所述 login_required()执行以下操作:

  • 如果用户未登录,请重定向至settings.LOGIN_URL,并在查询字符串中传递当前绝对路径。

  • 如果用户已登录,请正常执行视图。视图代码可以自由地假设用户已登录。

您还可以自定义装饰器,查看文档以获取更多信息。

答案 1 :(得分:0)

要登录必需,您必须使用装饰器来指示:

from django.contrib.auth.decorators import login_required

@login_required
def index(request):
    return render(request,'home.html')

在任何需要登录的视图中,只需使用它即可。

相关问题