2016-11-10 5 views
0

В настоящее время я использую встроенный фреймворк django-messages версии django 1.10.Как предотвратить утечку сообщений Django в другие модули?

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

Есть ли способ «пропустить» эти сообщения, чтобы у нас не было этого непреднамеренного воздействия?

Кроме того, в документации указано, что сообщения истекают, если они повторяются, означает ли это, что, если я забуду повторить их, у них есть потенциал для создания нескольких запросов?

+0

Я не уверен, что понимаю вашу проблему с пространством имен, поскольку все сообщения просто хранятся в запросе и управляются сеансами - они находятся в пространстве имен запросов. Любой объект, который обрабатывает запрос (и, следовательно, сеанс), может добавлять сообщения. Я не знаю, какое дополнительное пространство имен вам понадобится, поскольку сообщения не предназначены для межмодульной связи (для этого используется внешний кеш или шина сообщений). Тем не менее, вы можете добавить пользовательские теги в любое сообщение, чтобы их отличить. Сообщение очищается автоматически после обработки ответа, поэтому они не создаются. –

+0

@BurhanKhalid Как предотвратить сообщение, которое я добавляю в модуль 'email', из-за непреднамеренного отображения в модуле' account' – AlanSTACK

ответ

0

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

Когда один request получает message это итерированное над со следующей request, получает отображается, если шаблон позволяет его и удаляется из request данных. Это означает, что он отображается один раз и удаляется.

Единственный способ получить message от вашего email модуля, который будет отображаться в account модуль для перенаправления пользователя к account странице непосредственно после того, как действие, которое добавляет message была завершена (после того, как сообщение было отправлено, например). У вас есть полный контроль над этим с вашего views.