【问题标题】:How do i redirect to the same page after an action in django在 django 中执行操作后如何重定向到同一页面
【发布时间】:2019-07-17 13:28:54
【问题描述】:

您好,我有此功能add_to_cart,一旦将产品添加到购物车,它应该重定向到相同的位置。(因为答案没有解决问题)。 我已经改变了至少应该重定向到产品详细信息页面需要传递参数 slug 或产品 id 任何想法

def add_to_cart(request, **kwargs):
    ------------------------
    ------------------------
    messages.info(request, "item added to cart")
    return redirect(reverse('products:single_product',args=(request)))

产品详情的网址

url(r'^(?P<slug>.*)/$',single, name="single_product"),

【问题讨论】:

  • 我不明白你的问题是什么。你目前的方法有什么问题吗?
  • 是的,希望它重定向到同一页面而不是产品列表页面,假设有人将产品添加到主页上的购物车

标签: python django django-models django-views


【解决方案1】:

你可以这样做:

return HttpResponseRedirect(request.path_info)

您还可以阅读有关请求/响应在 Django 中的工作方式以及 docs 中的 request.path_info 的信息

【讨论】:

  • @Cipher 我编辑了我的答案并添加了指向文档的链接,以便您阅读request.path_info
【解决方案2】:

可以通过request.path找到当前请求的url,然后重定向。

from django.shortcuts import redirect

return redirect(request.path)

【讨论】:

  • 这个路径是什么(类似于 product.id 或 slug )
  • 它是请求的一个属性,它包含的信息告诉我们用户从哪个 url 调用了这个请求...... .path_info 也有同样的作用。
【解决方案3】:

在 kwargs 中发送您呼叫的地址并重定向到该地址。

【讨论】:

  • 请举个例子
【解决方案4】:

HttpRequest

from django.http import HttpResponseRedirect


return HttpResponseRedirect(request.path_info)

【讨论】:

  • path_info是什么意思,
  • 你总是可以使用 path 而不是 path_info。但正如我在文档中指出的那样,无论使用什么 Web 服务器,我链接的 path_info 始终包含路径的路径信息部分。
  • 路径有效,但仍重定向到相同的产品列表页面
  • 您要重定向到购物车页面还是产品列表页面?因为我发布的代码会将您重定向到您所在的页面。那么您到底想重定向到哪里?
  • 它非常适合产品列表页面我的问题:假设在产品详细信息页面上,添加到购物车后有一个按钮可以添加到购物车我需要保持在同一页面上不被重定向到另一个页面希望它清楚
猜你喜欢
  • 2022-08-15
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 2020-06-09
  • 2018-12-29
  • 1970-01-01
相关资源
最近更新 更多