2011-10-10 4 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이 업데이트 된 것처럼 보입니다. 이것은 내보기 코드입니다. 맞습니까? 당신이 render_to_response를 호출 한 후 항목을 수정하고 그 수정이 출력에 표시해야 할 수 있습니다 - TemplateView 사용하는 새로운 TemplateResponse 클래스의 다소 요점

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

.

명시 적으로 비활성화하려면 render_to_response의 결과에 render()을 호출하면됩니다.

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

return response 

(또한 직접 클래스 이름을 지정하는 대신 super을 대신 사용해야합니다주의.)