我正在尝试使用django.form重定向在进程后重定向到页面,但是将变量发送到要呈现的页面。
代码是:
...
if form.is_valid():
form.save()
confirmation_message = "Coworker information updated successfully!"
coworkers = Coworkers.objects.all()
return redirect('/coworkers/', locals())
...
在我的HTML中应该是:
{% extends 'base/base.html' %}
{% block content %}
<a href="add_coworker">Add Coworker</a>
<br/><br/>
{% if confirmation_message %}
{{ confirmation_message }}
<br/><br/>
{% endif %}
{% for coworker in coworkers %}
<a href="{{ coworker.id }}">{{ coworker.first_name|capfirst }} {{ coworker.last_name|capfirst }}</a></br>
{% endfor %}
{% endblock%}
变量“同事”正在工作,因为url“/ coworkers /”调用了另一个视图。但是,在这个视图中出现的变量“confirmation_message”和“同事”不起作用。
使用django重定向时,我不能使用“locals()”吗?
我怎么能解决这个问题?
提前感谢所有人!
答案 0 :(得分:3)
人们似乎在重定向方面存在很多概念上的麻烦:你不是第一个提出类似问题的人。
当您重定向时,您告诉用户的浏览器要求提供新的URL。就这样。问你问什么是没有意义的。您可以发送到重定向呼叫的唯一内容是URL中的参数。
对于其他任何事情,你需要将它存储在某个地方 - 这就是session的用途。请注意,对于消息的特定情况,Django有一个messages framework,可以为您完成所有工作。
(顺便说一句,我绝对讨厌使用locals()
向模板发送上下文。手动构建字典:键入的内容不多,而且更明确。)