Я хотел бы использовать модуль сообщений Django, однако, я хотел бы, чтобы мои сообщения сохранились, пока пользователь не нажимает X рядом с сообщением в противоположность наличию сообщений, исчезают, как только пользователь перезагружает страницу.
Я озадачен с двумя проблемами: Как я заставляю процессор контекста сообщений не удалить сообщения, после того как к ним получают доступ? Как я позже удаляю сообщение из DB явно, после того как пользователь нажимает на "удалить" кнопку (который вызывает вызов ajax)?
Спасибо!
В вашем случае django.contrib.messages
ни к чему хорошему не приведет. Это система сообщений, вдохновленная системой флэш-памяти RoR, в которой сообщения не должны оставаться в памяти
. Вам следует создать свою собственную систему обмена сообщениями (может быть, django-persistent-messages?), Которая сохраняла бы сообщения для зарегистрированных пользователей в базе данных.
Не забудьте сделать это доступным для других, если вы это сделаете =)
Начиная с версии 1.2, Django имеет новую структуру сообщений - django.contrib.messages
- которая теперь полностью отделена от модуля auth
и предлагает гораздо больше функциональных возможностей. Например, он обеспечивает базовый способ обработки истечения срока сообщений .
Вы также можете взглянуть на приложение django-cnotes , которое предоставляет простую систему уведомлений пользователей на основе файлов cookie. Установка константы CNOTES_AUTO_CLEAR
на Ложь
предотвращает автоматическую очистку нот.
И есть django-notices , еще одна замена встроенной системе уведомлений о сообщениях. Он не делает ничего волшебного, но предоставляет элегантный и простой API.
Сообщения Django могут показаться хорошей отправной точкой, но для того, чтобы добраться туда, куда вы хотите, требуются изгибы, и я бы не поверил, что будущий выпуск Django не сломает ваши хаки.
Реализация вашей собственной модели UserMessage, вероятно, будет лучше служить вам в долгосрочной перспективе. Это дает вам полный и однозначный контроль над жизненным циклом сообщения. Из него тоже может получиться хорошее приложение многократного использования.