我的主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')
但我知道这个页面有一个重定向循环
答案 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')
在任何需要登录的视图中,只需使用它即可。