2010-08-10 5 views
7

Простите меня, если этот вопрос не имеет смысла; В последнее время я немного спал.Отправка сообщений пользователю через сигналы django

Я хочу отправить уведомление пользователю всякий раз, когда сигнал подается через модуль сообщений django, но я не понимаю, как передать объект запроса методу messages.success.

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

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

Заранее спасибо.

+1

Возможно, вы не хотите этого делать. Пожалуйста, объясните, почему вы пытаетесь сделать что-то подобное. Просто отобразить сообщение в шаблоне - обычное решение. Что ты пытаешься сделать? –

+0

"всякий раз, когда пользователь получает значок"? Какие? –

ответ

7

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

Похоже, то, что вы пытаетесь сделать, было бы лучше для чего-то вроде django-notification, http://github.com/jtauber/django-notification/.

+0

Спасибо, это именно то, что я ищу. – IntrepidDude

+0

Ugh ... при повторном рассмотрении маршрут уведомления django кажется менее привлекательным. Минимизация запросов к db является приоритетом. – IntrepidDude

+0

Ха-ха, мне потребовалось всего четыре года, чтобы понять, что это отвечает всем требованиям, указанным в моем вопросе. – IntrepidDude

2

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

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

Смежные вопросы