与本地人一起使用重定向

时间:2012-12-17 16:30:52

标签: django django-templates django-views

我正在尝试使用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()”吗?

我怎么能解决这个问题?

提前感谢所有人!

1 个答案:

答案 0 :(得分:3)

人们似乎在重定向方面存在很多概念上的麻烦:你不是第一个提出类似问题的人。

当您重定向时,您告诉用户的浏览器要求提供新的URL。就这样。问你问什么是没有意义的。您可以发送到重定向呼叫的唯一内容是URL中的参数。

对于其他任何事情,你需要将它存储在某个地方 - 这就是session的用途。请注意,对于消息的特定情况,Django有一个messages framework,可以为您完成所有工作。

(顺便说一句,我绝对讨厌使用locals()向模板发送上下文。手动构建字典:键入的内容不多,而且更明确。)