Сохраняйте сообщения после отображения в шаблоне

#django #django-messages

Вопрос:

Я хотел бы сохранить последние сообщения, чтобы пользователь мог проверить их еще раз.

Как я могу сохранить его после показа? перед показом? Нужно ли мне внедрять модель БД?

Комментарии:

1. Да, вы должны использовать модель БД. Но используйте легкий NoSQL, такой как db (redis, mongo,…)

2. На самом деле у меня не огромное количество сообщений, я все еще с postgres. Я хочу сказать, как я могу перехватить все сообщения до или после того, как они будут показаны?

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

Ответ №1:

вы можете использовать redis, Redis может пригодиться.

Ответ №2:

Я нашел хорошее решение, не используя внешнюю библиотеку. Только с моим милым питоном!

Сначала я создаю функцию для хранения сообщений в базе данных:

 def save_messages(message):
    db.objects.add(ManyToMany.object.create(message))
    return redirect('message_saved')
 

а затем я помещаю функцию для запуска в любое время, когда сообщение отправляется в сами сообщения contrib

MYPROJECTvenvLibsite-packagesdjangocontribmessagesapi.py

 def add_message(request, level, message, extra_tags='', fail_silently=False):
"""
Attempt to add a message to the request using the 'messages' app.
"""
try:
    messages = request._messages
except AttributeError:
    if not hasattr(request, 'META'):
        raise TypeError(
            "add_message() argument must be an HttpRequest object, not "
            "'%s'." % request.__class__.__name__
        )
    if not fail_silently:
        raise MessageFailure(
            'You cannot add messages without installing '
            'django.contrib.messages.middleware.MessageMiddleware'
        )
else:
    from WALLAWALLA import save_messages
    save_messages(message) 
    return messages.add(level, message, extra_tags)
 

и это действительно отлично работает