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

时间:2014-01-01 21:54:24

标签: python django redirect django-urls

我有两个页面,一个用于显示特定项目的详细信息,另一个用于搜索项目。假设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,不知道我以前做错了什么,但是当我再次尝试它时它起作用了。

3 个答案:

答案 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}')