如何在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