Django 从另一个应用程序重定向到根URL';s观点
当用户未登录就访问应用程序的URL时,我尝试重定向到根URL 我尝试了两种方法:Django 从另一个应用程序重定向到根URL';s观点,django,Django,当用户未登录就访问应用程序的URL时,我尝试重定向到根URL 我尝试了两种方法: 使用装饰器 返回404错误,表示当前路径为accounts/login 将根页面的视图传递到重定向 返回404错误,表示当前路径为professors/login.views.index 根URL是localhost:8000/,当用户未登录时,我试图在访问localhost:8000/code>后重定向到它 这个问题与我在这里发现的类似: 然而,应用这个解决方案对我来说并不奏效。从应用程序的视图重定向到根目录时,
accounts/login
视图
传递到重定向
professors/login.views.index
根URL是localhost:8000/
,当用户未登录时,我试图在访问localhost:8000/code>后重定向到它
这个问题与我在这里发现的类似:
然而,应用这个解决方案对我来说并不奏效。从应用程序的视图重定向到根目录时,它重定向到的根目录是应用程序的根目录,而不是网站的根目录,这对于访问应用程序URL后重定向的任何URL都是如此。例如,如果根URL是localhost:8000
,而应用程序的URL是localhost:8000/professors/
,那么尝试从后者访问任何其他URL将意味着localhost:8000/professors/
是起点,我在登录URL
或重定向(重定向URL)
中写的内容将添加到该URL中,这意味着我无法再访问localhost:8000
最后说明:
当我在else
中尝试返回重定向(“”)
时,它返回了
NoReverseMatch at/教授/
找不到“”的反转不是有效的视图函数或模式名称。
这表明起点再次来自localhost:800/professors/
在中设置您的
登录\u url
参数
在中设置您的
登录\u url
参数
非常感谢。它确实重定向到主页,但显示的URL是
http://localhost:8000/?next=/professors/
而不是http://localhost:8000
,你知道为什么吗?还有,为什么重定向不起作用?这是重定向\u字段\u名称
。当您从根url进行身份验证时,Django会将您带到/professors/
,这是您首先尝试访问的url。我愿意,不得不等待几分钟才能访问。那么,我必须使用decorator进行重定向?换句话说,如果没有decorator,我无法在URL中“返回”?^(我想你在我能够编辑它之前查看了评论)是的。。你是对的。没有那个装饰程序,你不能返回URL。谢谢!它确实重定向到主页,但显示的URL是http://localhost:8000/?next=/professors/
而不是http://localhost:8000
,你知道为什么吗?还有,为什么重定向不起作用?这是重定向\u字段\u名称
。当您从根url进行身份验证时,Django会将您带到/professors/
,这是您首先尝试访问的url。我愿意,不得不等待几分钟才能访问。那么,我必须使用decorator进行重定向?换句话说,如果没有decorator,我无法在URL中“返回”?^(我想你在我能够编辑它之前查看了评论)是的。。你是对的。没有这个装饰程序,你就不能返回URL。
@login_required(login_url = '')
def index(request):
return render(request, 'professors/index.html')
def index(request):
if request.user.is_authenticated:
return render(request, 'professors/index.html')
else:
return redirect('login.views.index')
@login_required(login_url='/')
def index(request):
return render(request, 'professors/index.html')
#settings.py
LOGIN_URL='/'