0

我正在尝试使用 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/” 调用的另一个视图,变量“coworkers”正在工作。但是这个视图中的变量“confirmation_message”和“coworkers”不起作用。

使用 django 重定向时不能使用“locals()”吗?

我怎么能解决这个问题?

在此先感谢大家!

4

1 回答 1

3

人们似乎对重定向有很多概念上的麻烦:您不是第一个提出类似问题的人。

当你重定向时,你是在告诉用户的浏览器请求一个新的 URL。就这样。问你在问什么根本没有意义。您可以发送到重定向调用的唯一内容是 URL 中的参数。

对于其他任何事情,您都需要将其存储在某个地方——这就是会话的用途。请注意,对于特定的消息情况,Django 有一个消息框架可以为您完成所有工作。

(顺便说一句,我绝对讨厌这种用于locals()将上下文发送到模板的用法。手动构建字典:输入不多,而且更明确。)

于 2012-12-17T17:02:03.423 回答