1

したがって、メインページ(/ Main)と、ユーザーが私に連絡できるページ(/ Contactと呼びます)があります。

ユーザーがContactでフォームを正常に送信した後、ユーザーをMainにリダイレクトし、ページの上部に「フォームが正常に送信されました」という小さなボックスを表示したいと思います。これを行うには、/ Main / SuccessのようなURLにリダイレクトします。これは、基本的に、successパラメーターが渡されたメインビューです。

問題は、ユーザーのブラウザのURLに/ Main/Successを表示したくないということです。ユーザーがページの上部に余分なボックスを表示している場合でも、URLアドレスボックスで/Mainのように表示したいと思います。これは、アドレスバーに/ Main / Successと入力して、ボックスが上にあるページに移動するのを防ぐためです。ユーザーは、フォームを正常に送信した後にのみ成功ボックスを表示する必要があります。また、ユーザーが成功ボックスが表示されたメインページを更新すると、成功ボックスなしでメインページが再度表示されるはずです。

これは、2回リダイレクトする必要があることを意味しますか?/ Contact to / Main / Success to / Main?これを行う場合、ボックスをメインに表示するにはどうすればよいですか?この問題に取り組む方法について何かアイデアはありますか?私は前回から完全に混乱しており、私が得ることができるどんな助けにも本当に感謝します。

ありがとう!

4

1 に答える 1

5

Djangoメッセージフレームワークを見てください。これにより、この種のメッセージだけを定義でき、複数のリダイレクトを回避できます。

あなたがしなければならないのは、次のようなメッセージ(もしあれば)を表示するいくつかのコードをテンプレートに追加することです:

{% if messages %}
    {% for message in messages %}
        {{ message }}
    {% endfor %}
{% endif %}

次に、次のようにビュー内のユーザーにメッセージを「送信」できます。

from django.contrib import messages
messages.success(request, 'Form submitted successfully')

詳細(たとえば、メッセージの種類やテンプレート内のメッセージの属性)については、上記のドキュメントを確認してください。

于 2013-03-03T18:59:33.813 に答える