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

我有一个验证并保存表单的视图。保存表单后,我想重定向回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,请阅读涉及消息的答案

以上是 如何在Django中使用上下文重定向? 的全部内容, 来源链接: utcz.com/qa/403040.html

回到顶部