当前位置: 首页 > 面试题库 >

如何在Django中使用上下文重定向?

洪昊然
2023-03-14
问题内容

我有一个验证并保存表单的视图。保存表单后,我想重定向回list_object视图,并显示一条成功消息“客户xyz的表单已成功更新…”

HttpResponseRedirect似乎无法正常工作,因为它只为url提供一个参数,无法与之一起传递字典。

我已经尝试修改object_list的包装,以将dict作为具有必要上下文的参数。我从保存表单的视图内部返回对此包装的调用。但是,呈现页面时,URL为“ / customer_form /”而不是“ / list_customers /”。我尝试修改请求对象,然后再将其传递给object_list包装器,但这没有用。


问题答案:

请注意,此处建议的答案仅适用于Django <1.2:

你可以控制要重定向到的视图吗?在这种情况下,你可以在重定向之前将上下文保存在会话中。目标视图可以从会话中拾取上下文(并将其删除),并使用它来呈现模板。

如果你唯一的要求是显示一条消息,那么有一种更好的方法。你的第一个视图可以为当前使用创建消息,auth并让第二个视图读取和删除它。像这样:

def save_form(request, *args, **kwargs):
    # all goes well
    message = _("form for customer xyz was successfully updated...")
    request.user.message_set.create(message = message)
    return redirect('list_view')

def list_view(request, *args, **kwargs):
    # Render page

# Template for list_view:
{% for message in messages %}
   ... 
{% endfor %}

消息将保存到数据库。这意味着即使重定向后你也可以访问它们。在渲染模板时会自动读取并删除它们。你将不得不使用RequestContext它来工作。

对于Django => 1.2,请阅读涉及消息的答案



 类似资料:
  • 问题内容: 我正在使用express在node.js中制作一个Web应用程序。这是我所拥有的简化: 我的问题如下: 如果发现发送的数据无效,我想向页面传递一些其他上下文。我该怎么办?重定向似乎不允许任何额外的参数。 问题答案: 有几种方法可以将数据传递到不同的路由。当然,最正确的答案是查询字符串。您需要确保值正确地是encodeURIComponent和encodeURIComponent。 您可

  • 首先,我想说我从来没有使用过Next.js或context api,所以请耐心听我说。 我目前正在Next.js中开发一个web应用程序,其中有多个页面,每个页面都包含一个表单。我希望有某种全局状态,以便能够设置和更新每个表单的数据。所有表单数据一起 例如:第1页=名称,第2页=说明,... 从我在网上读到的内容来看,我认为使用上下文api就足够了,但我遇到了困难。当我在第一个表单上填写名字时,它

  • 问题内容: 我有一个表单,可以在用户输入信息后重定向到同一页面(以便他们可以继续输入信息)。如果表单提交成功,我将返回 效果很好。但是,在这种情况下,我还想向用户显示一些消息(例如,屏幕顶部的“您的数据已保存”)。如果不进行重定向,我只会在上下文字典中返回这些消息。但是,有了重定向,我无法做到这一点。 那么在使用HttpResponseRedirect时如何传递模板上下文信息? 我正在尝试做的事情

  • 问题内容: 作为Django的新手,我很难在Django 1.3中制作上传应用程序。我找不到任何最新的示例/代码段。有人可以发布最少但完整的(模型,视图,模板)示例代码来这样做吗? 问题答案: ew,Django文档确实没有很好的例子。我花了2个多小时来挖掘所有内容,以了解其工作原理。有了这些知识,我实现了一个项目,该项目可以上传文件并将其显示为列表。要下载该项目的源代码,请访问https://g

  • 我想将我的url重定向到http://localhost:8080/clickbuy/product/details到http://localhost:8080/clickbuy/home。 我已经定义了header.jsp,并将其包含在所有页面中。当我从其他任何地方单击home link url时,从当前url添加/home,因此显示404错误。 如何在ModelAndView返回类型方法中使用

  • 我使用以下代码在tomcat中设置上下文路径,通过覆盖tomcat的默认路径,我可以使用直接访问应用程序。 现在我将使用WildFly-8.2.0作为运行时环境。我尝试将。war文件直接粘贴到中,我可以在等浏览器中访问我的项目。 我需要像在tomcat中那样为wildfly设置相同的配置,以便通过重写wildfly的默认欢迎页面来访问中的项目。我试图在wildfly中做同样的事情,但我被困在哪里。