【问题标题】:How to use just one url pattern in django to handle GET, POST and kwargs in HttpResponseRedirect?如何在 django 中仅使用一个 url 模式来处理 HttpResponseRedirect 中的 GET、POST 和 kwargs?
【发布时间】:2017-05-03 04:08:45
【问题描述】:

我知道在处理了一个 post 请求后,我们不应该渲染页面,而应该使用 HttpResponseRedirect。我想用这个重定向发回一些数据。我经历了多个 SO,但我有几个问题。

  • 使用消息框架。
    很好,直到您只是发送短信。如果我想将对象或字典发送回模板,我应该使用什么?

  • 我知道我们可以使用*args**kwargs。 当我尝试在 HttpResponseRedirect 中使用 kwargs 时,它抱怨 url 匹配。这是否意味着我需要创建另一个接受 kwargs 的 URL。

让我们在这里看一个例子:-
我正在保存一些我有这个 url 的数据。

url(r'^add-event/$', views.add_event, name='add_event')

在此页面的 GET 请求中,加载模板,显示表单以保存数据。
在此页面的 POST 请求中,表单数据被保存。
现在,如果 POST 请求中一切正常,我可以使用查询字符串或消息框架发送成功消息。但是如果在保存数据时出现一些错误,我想将整个数据发送回模板以将其呈现到表单中,以便用户无需再次填写表单。

我的问题来了。如果我使用如下的 args 或 kwargs:

return HttpResponseRedirect(reverse("tenant:add_event kwargs=data))

其中 data 是包含大量数据的字典(不是简单的文本消息),我如何形成匹配的 url?

是否可以为 GET 和 POST 请求制作一个 URL并处理上述情况?

【问题讨论】:

  • 不要尝试在 URL 中传递复杂的数据。使用会话。
  • @DanielRoseman : 如何在模板中使用后删除/取消设置会话中的变量?
  • 你在视图中这样做,例如使用pop

标签: python django httpresponse


【解决方案1】:

关于您关于消息框架的问题,请查看question 此处描述如何使用消息框架传递字典。

您还可以使用 django 会话 framework 将 POST 数据保存在会话中。这样,重定向页面将可以访问 Http POST 提交的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多