如何在 Django 中重定向到不同的 URL?

Posted

技术标签:

【中文标题】如何在 Django 中重定向到不同的 URL?【英文标题】:How can I redirect to a different URL in Django? 【发布时间】:2014-01-19 08:30:32 【问题描述】:

我有两个页面,一个用于显示特定项目的详细信息,另一个用于搜索项目。假设 urls.py 已为它们和我的应用程序的 views.py 正确配置,我有:

def item(request, id):
    return render(request, 'item.html', data)

def search(request):
    #use GET to get query parameters
    if len(query)==1:
        #here, I want to redirect my request to item, passing in the id
    return render(request, 'search.html', data)

如何正确重定向请求?我试过return item(request, id) 并呈现正确的页面,但它不会更改地址栏中的URL。我怎样才能让它真正重定向而不是仅仅渲染我的其他页面?项目页面的 URL 模式是 /item/id。我已经查看了关于 SO 和文档的类似问题的答案,但仍然无法弄清楚。

编辑:我不到一周前才开始学习 Python,其他答案还不够清楚,无法帮助我。

编辑 2:Nvm,不知道我之前做错了什么,但是当我再次尝试时它起作用了。

【问题讨论】:

您指的是哪个“其他答案”,您到底在哪里遇到了麻烦?这个网站上有数百个关于“Django 重定向”的答案,以及准确解释该做什么的实际文档。 在再次寻找其他答案时,我重试了 HttpResponseRedirect,这次成功了。也许在此之前我有其他问题导致它无法重定向。我最初看到的是关于 RedirectViews 的内容,但我不知道这有什么关系。 【参考方案1】:

你可以使用HttpResponseRedirect:

from django.http import HttpResponseRedirect

# ...

return HttpResponseRedirect('/url/url1/')

其中“url”和“url1”等于重定向的路径。

【讨论】:

【参考方案2】:

你可以试试这个:

from django.shortcuts import redirect
return redirect(f'/customer/pk')

【讨论】:

【参考方案3】:

上述答案对导入语句更改的建议

from django.http import HttpResponseRedirect
return HttpResponseRedirect('/url-name-here/')

【讨论】:

以上是关于如何在 Django 中重定向到不同的 URL?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中重定向(包括 URL 更改)?

如何在 vue-router beforeRouteEnter 钩子中重定向到不同的 url?

django 在 urls.py 中重定向

如何在 React 中重定向

在laravel中重定向到外部url时如何保留会话数据

301 在 Django 中重定向 www 子域