【问题标题】:Django: new post notificationDjango:新帖子通知
【发布时间】:2011-12-04 12:14:51
【问题描述】:

当有些人发布了新的论坛帖子时,我正在尝试做一个简单的通知。这在过去可以工作,但现在由于某种原因它不起作用。我不知道我做了什么来打破它。在我的 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

【问题讨论】:

    标签: django templates time notifications render


    【解决方案1】:

    这或多或少是 TemplateView 使用的新 TemplateResponse 类的重点 - 它允许您在调用 render_to_response 后修改项目并将这些修改显示在输出中。

    要显式禁用它,您只需在 render_to_response 的结果上调用 render()

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

    (另请注意,您应该使用super,而不是直接指定类名。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多