Джанго: уведомление о новой записи - PullRequest
1 голос
/ 10 октября 2011

Я пытаюсь сделать простое уведомление, когда кто-то опубликовал новое сообщение на форуме.Раньше это работало в прошлом, но теперь по какой-то причине этого не происходит.Я не знаю, что я сделал, чтобы сломать это.В моем шаблоне index.html я сравниваю время:

<li class="{% if topic.topic_last_post.post_time > request.user.last_login %}bold notification{% endif %}">...</li>

Сравнение работает.Однако кажется, что request.user.last_login обновляется до отображения шаблона.Это мой вид кода.Это правильно?

class FrontpageView(TemplateView):
    template_name = "frontpage/index.html"

    def render_to_response(self, context, **response_kwargs):
        t = TemplateView.render_to_response(self, context, **response_kwargs)
        if self.request.user.is_authenticated():
            now = datetime.datetime.now()
            self.request.user.last_login = now
            self.request.user.save()
        return t

1 Ответ

2 голосов
/ 10 октября 2011

Это более или менее смысл нового класса TemplateResponse, который используется TemplateView - он позволяет изменять элементы после вызова render_to_response и отображать эти изменения в выходных данных.

Чтобы явно отключить это, вы можете просто вызвать render() по результату render_to_response.

response = super(FrontpageView, self).render_to_response(content, **response_kwargs)
reponse.render()
if ...

return response

(Также обратите внимание, что вы должны использовать super вместо непосредственного указания имени класса.)

...