Я хочу показать сообщение при каждом просмотре в моем Django проекте. Как только пользователь создал учетную запись, я отправляю ему электронное письмо с просьбой подтвердить свою электронную почту, и пока он не подтвердит свой адрес электронной почты (посетив проверочный URL), я покажу сообщение.
Теперь я я не хочу показывать сообщение в представлении проверки URL, и я не хочу, чтобы сообщение "дублировалось", т.е. отображало два одинаковых сообщения. Сначала я попробовал подход создания промежуточного программного обеспечения, которое будет просто добавлять сообщение к каждому ответу, но у этого есть 2 недостатка:
- Сообщение появляется в представлении проверки - в настоящее время я удаляю все сообщения из этого представления , но это не идеально.
- Когда я использую перенаправление в своем представлении, я получаю более одного и того же сообщения. Большинство перенаправлений, которые я использую, выполняются после POST, поэтому я могу проверить, является ли запрос GET, но это не так.
Вот промежуточное ПО:
class VerifiedEmailMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
if request.user.id is None:
return self.get_response(request)
if not request.user.profile.verified_email:
messages.warning(request, 'We have sent you an email to verify your account. '
'Please click the link in that email to verify your account.')
response = self.get_response(request)
return response
Есть ли стандартный или лучший способ сделать это?