Как добавить подтверждающее сообщение для комментариев, используя встроенную в Django структуру? - PullRequest
1 голос
/ 28 марта 2012

Я хочу создать простое сообщение "Ваш комментарий был опубликован!"используя messages фреймворк Django.Я использую фреймворк Django comments и настроил его так, чтобы после публикации комментария он обновлял страницу с

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

внутри моего form.html, который я создал для переопределения comments по умолчанию.Я также должен был включить django.core.context_processors.request для TEMPLATE_CONTEXT_PROCESSORS внутри моего settings.py.

В любом случае, messages документация говорит о добавлении сообщений внутри views.py.Означает ли это, что мне нужно переопределить comments views.py или есть более простой способ сделать это?Мне немного неудобно изменять исходный код для comments.Если бы мне пришлось, я даже не уверен, где добавить строку

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

под def post_comment() в django.contrib.comments.views.comments.

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Вы можете подключить настраиваемый приемник к comment_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 голосов
/ 28 марта 2012

Секрет в том, что при публикации комментария приложение комментариев отправляет сигнал.Поэтому настройте приемник для обработки сигнала 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/

...