首页 > 解决方案 > 重定向到外部网站时,url 被附加到请求的 url 的末尾

问题描述

我正在尝试将用户重定向到 URl,但它正在将我重定向到不正确的 url。

视图.py:

def redirect_shortner(request):
    return redirect('www.google.com')

网址.py:

urlpatterns = [
    path('', redirect_shortner, name='redirect_shortner'),
]

代码对我来说似乎是正确的,但用户被错误地重定向到当前 url 附加了指定 url 的 url,即用户被重定向到http://127.0.0.1:8000/www.google.com当前http://127.0.0.1:8000/url 的时间。

标签: djangodjango-rest-frameworkdjango-viewsdjango-urls

解决方案


当一个人想要重定向到其他网站时,应该为另一个网站上的页面提供绝对URL(请参阅问题Absolute vs relative URLs)。www.google.com不是绝对 url,即它缺少协议,https://因此它被视为来自用户当前所在页面的相对http://127.0.0.1:8000/www.google.comurl,因此解析为. 相反,您希望将重定向编写为绝对的:

def redirect_shortner(request):
    return redirect('https://www.google.com/')

推荐阅读