当有人发布新的论坛帖子时,我正在尝试做一个简单的通知。这曾经在过去工作,但现在它不是出于某种原因。我不知道我做了什么打破它。在我的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
答案 0 :(得分:2)
这或多或少是由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
而不是直接指定类名。)