Как сделать Django сообщения в стиле StackOverflow? - PullRequest
11 голосов
/ 19 июня 2010

Я хотел бы использовать модуль сообщений Django, однако я хотел бы, чтобы мои сообщения сохранялись до тех пор, пока пользователь не нажмет X рядом с сообщением, в отличие от того, что сообщения исчезают, как только пользователь перезагрузит страницу.

Я озадачен двумя проблемами: Как заставить обработчик контекста сообщений не удалять сообщения, когда к ним обращаются?Как позже удалить сообщение из БД явным образом, когда пользователь нажмет кнопку «удалить» (которая вызывает вызов ajax)?

Спасибо!

Ответы [ 4 ]

8 голосов
/ 21 июня 2010

В вашем случае django.contrib.messages ни к чему хорошему не приведет.Это система сообщений, основанная на флеш-системе RoR, где сообщения не должны оставаться вокруг

Вам следует создать собственную систему обмена сообщениями (возможно, django-persistent-messages?), Которая будет сохранять сообщения для зарегистрированных пользователей в базе данных..

  • Это довольно тривиальная задача - реализовать
  • модель с внешним ключом в пользовательском
  • контекстном процессоре, чтобы сообщения были доступны в шаблонах * 1011.*
  • представление для получения сообщения
  • может быть вспомогательная функция для создания сообщений

Не забудьте сделать его доступным для других, если вы это сделаете =)

7 голосов
/ 21 июня 2010

Начиная с версии 1.2, в Django появилась новая платформа сообщений - django.contrib.messages, которая теперь полностью отделена от модуля auth и предлагает гораздо больше функциональных возможностей.Например, он предоставляет базовый способ обработки срока действия сообщений .

. Вы также можете взглянуть на приложение django-cnotes , которое предоставляет простой файл cookie.на основе системы уведомлений пользователей.Установка постоянной CNOTES_AUTO_CLEAR в False предотвращает автоматическую очистку заметок.

И есть django-Уведомления , еще одна замена для встроенной системы уведомления о сообщениях.Это не волшебство, но предоставляет элегантный и простой API.

4 голосов
/ 23 февраля 2011

С конца 2010 года для этой цели существует библиотека django-persistent-messages . Он достаточно хорошо документирован и хорошо работает для создания системы обмена сообщениями в стиле Stack Overflow.

Он также интегрируется со встроенной системой обмена сообщениями Django, поэтому изменения кода относительно незначительны, и вы все равно можете использовать исходную систему для сообщений, которые не должны быть постоянными.

2 голосов
/ 19 июня 2010

Сообщения Django могут показаться хорошей отправной точкой, но для того, чтобы добраться туда, куда вам нужно, требуются усилия, и я бы не поверил, что будущий выпуск Django не сломит ваши хаки.

Реализация вашей собственной модели UserMessage, вероятно, послужит вам лучше в долгосрочной перспективе. Это дает вам полный, однозначный контроль над жизненным циклом сообщения. Это может быть хорошим приложением многократного использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...