2012-03-27 4 views
1

「あなたのコメントが投稿されました!」という簡単なメッセージを作成したいDjangoのmessagesフレームワークを使用します。私は、Djangoのcommentsフレームワークを使用して、私のform.html両方のDjangoの組み込みフレームワークを使用してコメントの確認メッセージを追加するには?

<div><input type="hidden" name="next" value="{{ request.get_full_path }}" /></div> 

とコメントそれリフレッシュページを掲示した後、私はcommentsのデフォルトを上書きするために作成されているように、それを設定しています。またsettings.pyの中にTEMPLATE_CONTEXT_PROCESSORSdjango.core.context_processors.requestを含める必要がありました。

とにかく、messages documentationは、views.pyの中にメッセージを追加すると言います。つまり、commentsviews.pyを無効にする必要があるのですか、これを行う簡単な方法がありますか?私はcommentsのソースコードを変更するのが少し不快です。私がしなければならないとしたら、私はdjango.contrib.comments.views.commentsdef post_comment()下行

messages.add_message(request, messages.SUCCESS, 'You comment has been posted!') 

を追加する場所さえわかりません。

答えて

3

することはできconnect a custom receivercomment_was_posted signalに。それは次のようになります。彼らはすべてのモデル定義時にインポートされるので

from django.contrib.comments.signals import comment_was_posted 

def thank_user(sender, comment=None, request=None, **kwargs): 
    messages.add_message(request, messages.SUCCESS, 'You comment has been posted!') 
comment_was_posted.connect(thank_user) 

なスニペットのための素晴らしい場所は、project_specific models.pyです。

3

秘密は、コメントを投稿するときにコメントアプリが信号を送信することです。それで、comment_was_posted(またはcomment_will_by_posted)シグナルを処理する受信機を設定してください。受信機では、これがあるためにmessages.add_message(...)

ドキュメントを呼び出す: https://docs.djangoproject.com/en/1.4/ref/contrib/comments/signals/#module-django.contrib.comments.signals

https://docs.djangoproject.com/en/1.4/topics/signals/

関連する問題