【问题标题】:How can I redirect to a different URL in Django?如何在 Django 中重定向到不同的 URL?
【发布时间】: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 的内容,但我不知道这有什么关系。

标签: python django redirect django-urls


【解决方案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/')
      

      【讨论】:

        猜你喜欢
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        • 2016-06-24
        • 2020-12-26
        • 2011-01-31
        • 1970-01-01
        • 2011-04-04
        • 2021-10-20
        相关资源
        最近更新 更多