2011-10-10 77 views
1

我試圖做一個簡單的通知,當有人發佈了一個新的論壇帖子。這曾經在過去工作,但現在它並沒有出於某種原因。我不知道我做了什麼來打破它。在我的index.html模板中,我做了一個時間比較:Django:新帖子通知

<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 

回答

2

這是新TemplateResponse類,它使用TemplateView或多或少的一點 - 它可以讓你調用render_to_response後修改的項目,並將這些修改在輸出顯示。

要明確禁用該功能,您可以對render_to_response的結果調用render()

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

return response 

(另請注意,您應該使用super而不是直接指定類名。)