【问题标题】:Redirect Django not working and not redirecting重定向 Django 不工作且不重定向
【发布时间】:2020-10-27 09:18:47
【问题描述】:

views.py:

def showLoginPage(request):
    if request.method == "POST":
        try:
            body_unicode = request.body.decode('utf-8')
            if 'csrfmiddlewaretoken' not in body_unicode:
                body = json.loads(body_unicode)
                user_obj = AuthenticateUser()
                user_obj.validate_user(body)
                c={}
                c.update(csrf(request))
                return redirect('http://abchostname/mainPage/')
                # return redirect('/mainPage') This is another url which i want to redirect after 
                # successful login
        except Exception as exe:
            print("Inside Exception : ",exe)
            raise
    else:
        print("Inside else {}".format(request.method))

    return render(request, 'login.html')

@login_required(login_url="/login/")
def showMainPage(request):
    return render(request, 'mainPage.html')

我想在成功登录后重定向,我看到登录成功并且后端也正确命中。

 [07/Jul/2020:06:59:29 +0000] "GET /login/ HTTP/1.1" 200 2082 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
 [07/Jul/2020:06:59:36 +0000] "POST /login/ HTTP/1.1" 200 2081 "http://abchostname/login/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"
 [07/Jul/2020:06:59:36 +0000] "POST /login/ HTTP/1.1" 302 306 "http://abchostname/login/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362"

在第三个选项中显示 302 状态代码,这意味着它正在重定向。我需要一些帮助。

【问题讨论】:

    标签: python-3.x django redirect django-forms


    【解决方案1】:

    要执行重定向,最好给出命名的 url 和带有名称的访问 url,

    return redirect('main-page')
    

    redirect() 将尝试使用其给定的参数来反转 URL。

    path('/main-page/', showMainPage, name='main-page')
    

    即使直接给出url,也不要给出完整的url,给出一个相对的url,比如:

     return redirect('/mainPage/')
    

    阅读更多:https://realpython.com/django-redirects/#:~:text=Django%20Redirects%3A%20A%20Super%20Simple%20Example,-In%20Django%2C%20you&text=Just%20call%20redirect()%20with,then%20return%20from%20your%20view.&text=Assuming%20this%20is%20the%20main,to%20%2Fredirect%2Dsuccess%2F%20.

    【讨论】:

    • 我试过“return redirect('/mainPage/')”这个选项和其他选项。但它仍然无法正常工作。我从后端看到它正在被重定向,但在浏览器中页面没有被重定向。不知道是缓存有问题还是别的什么的!!!
    猜你喜欢
    • 2013-09-11
    • 2019-11-12
    • 2023-01-05
    • 1970-01-01
    • 2014-11-22
    • 2018-05-14
    • 2017-07-05
    • 1970-01-01
    相关资源
    最近更新 更多