11

Djangoのメッセージモジュールを使用したいのですが、ユーザーがページをリロードするとすぐにメッセージが消えるのではなく、ユーザーがメッセージの横にあるXをクリックするまでメッセージを保持したいと思います。

私は2つの問題に悩まされています:メッセージのコンテキストプロセッサがアクセスされたメッセージを削除しないようにするにはどうすればよいですか?ユーザーが「削除」ボタン(ajax呼び出しを呼び出す)をクリックしたら、後でDBからメッセージを明示的に削除するにはどうすればよいですか?

ありがとう!

4

4 に答える 4

8

あなたの場合django.contrib.messages、あなたをどこにも連れて行かないでしょう。これは、RoR フラッシュ システムにインスパイアされたメッセージ システムであり、メッセージが留まることは想定されていません。

登録ユーザーのメッセージをデータベースに保存する独自のメッセージング システム (おそらく django-persistent-messages?) を作成する必要があります。

  • 実装するのはかなり簡単な作業です
  • User に外部キーを持つモデル
  • テンプレートでメッセージを使用できるようにするためのコンテキスト プロセッサ
  • メッセージを消費するビュー
  • おそらくメッセージを作成するためのヘルパー関数

そうする場合は、他の人が利用できるようにすることを忘れないでください =)

于 2010-06-21T11:37:00.663 に答える
7

1.2 以降、Django には新しいメッセージ フレームワークがあります。これdjango.contrib.messagesはモジュールから完全に分離され、authより多くの機能を提供します。たとえば、メッセージの有効期限を処理する基本的な方法を提供します。

簡単な Cookie ベースのユーザー通知システムを提供するdjango-cnotesアプリケーションもご覧ください。定数CNOTES_AUTO_CLEARを に設定するとFalse、メモが自動的に消去されなくなります。

そしてdjango-noticesがあり、組み込みのメッセージ通知システムのさらに別の代替品です。魔法はありませんが、エレガントでシンプルな API を提供します。

于 2010-06-21T09:32:20.540 に答える
4

2010年後半から、まさにこの目標のためのライブラリdjango-persistent-messagesがあります。それはかなりよく文書化されており、StackOverflowスタイルのメッセージングシステムを作成するためにうまく機能します。

また、組み込みのDjangoメッセージングシステムと統合されているため、コードの変更は比較的軽微であり、永続的である必要のないメッセージには元のシステムを引き続き使用できます。

于 2011-02-23T14:26:40.977 に答える
2

Django のメッセージは良い出発点のように思えるかもしれませんが、目的の場所にたどり着くにはゆがみが必要であり、Django の将来のリリースであなたのハックが破られないとは思えません。

独自の UserMessage モデルを実装すると、長期的にはおそらくより効果的になります。これにより、メッセージのライフサイクルを完全かつ明確に制御できます。再利用可能な素敵なアプリにもなるかもしれません。

于 2010-06-19T17:50:50.890 に答える