我有两个页面,一个用于显示特定项目的详细信息,另一个用于搜索项目。假设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,不知道我以前做错了什么,但是当我再次尝试它时它起作用了。
答案 0 :(得分:3)
尝试使用:
return HttpResponseRedirect('/url/url1/')
其中url和url1等于重定向的路径。
*编辑:我忘了提及这一小段关键信息。您需要在views.py:
的顶部运行它from django.http import HttpResponse
导入库。
答案 1 :(得分:0)
上述答案中关于进口声明变更的一分钟建议
from django.http import HttpResponseRedirect
return HttpResponseRedirect('/url-name-here/')
答案 2 :(得分:0)
您可以尝试以下方法:
from django.shortcuts import redirect
return redirect(f'/customer/{pk}')