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 に答える