如何在 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?的主要内容,如果未能解决你的问题,请参考以下文章