簡體   English   中英

如何重定向到 Django 中的外部 URL?

[英]How to redirect to external URL in Django?

我認為這應該很容易,但我無法弄清楚。 我正在嘗試編寫一個退出視圖。 我正在收到一個獲取請求。 通過 urls.py,我呈現了我的選擇退出視圖。 在此視圖中,我在數據庫中為用戶保存了一些參數,然后我想將用戶重定向到外部 URL。 我試過:

return redirect('http://stackoverflow.com/')

來自Django 文檔 但是,盡管參數按預期保存在數據庫中,但選擇退出視圖會呈現訓練模板而不是返回重定向。 我的代碼如下:

def optout(request):
    if (('REMOTE_USER' in request.META and request.META['REMOTE_USER'] != "") or 
        (request.session.get('userid', False) and request.session['userid'] != "")):
        if ('REMOTE_USER' in request.META and request.META['REMOTE_USER'] != ""):
            userid = request.META['REMOTE_USER']
        if (request.session.get('userid', False) and request.session['userid'] != ""):
            userid = request.session['userid']
        user = User.objects.get(username=userid)
        user.optout = True
        user.postpone = False
        user.save()
        return redirect('http://stackoverflow.com/')
    context = { 'userid': "" }
    return render(request, 'games/Training.html', context)

任何幫助都受到高度贊賞。

是的, return redirect('http://stackoverflow.com/')是正確的方法。

如果您執行以下操作,您可以確認這是一種重定向的工作方法。

   from django.shortcuts import redirect

   def optout(request):
       return redirect("http://stackoverflow.com/")

您的條件語句不能被捕獲。

使用類HttpResponseRedirect

from django.http import HttpResponseRedirect

def out(request):
    return HttpResponseRedirect("http://google.com")

或者:

使用類HttpResponse

from django.http import HttpResponse

def out(request):
    response = HttpResponse("", status=302)
    response['Location'] = "http://google.com"
    return response

筆記:

最后一個對於從網站重定向到移動(Android/Iphone)應用程序很有用。 其中位置是scheme://host

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM