Django 从另一个应用程序重定向到根URL';s观点

Django 从另一个应用程序重定向到根URL';s观点,django,Django,当用户未登录就访问应用程序的URL时,我尝试重定向到根URL 我尝试了两种方法: 使用装饰器 返回404错误,表示当前路径为accounts/login 将根页面的视图传递到重定向 返回404错误,表示当前路径为professors/login.views.index 根URL是localhost:8000/,当用户未登录时,我试图在访问localhost:8000/code>后重定向到它 这个问题与我在这里发现的类似: 然而,应用这个解决方案对我来说并不奏效。从应用程序的视图重定向到根目录时,

当用户未登录就访问应用程序的URL时,我尝试重定向到根URL

我尝试了两种方法:

  • 使用装饰器
  • 返回404错误,表示当前路径为
    accounts/login

  • 将根页面的
    视图
    传递到
    重定向
  • 返回404错误,表示当前路径为
    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='/'