【发布时间】:2026-01-29 20:15:01
【问题描述】:
我正在编写基于 django 的论坛,并且我认为它适合用户浏览他的最后一页。此外,用户跟踪中间件可以很好地帮助提出建议等。
-
我认为,最简单的方法是使用
Django Middleware,但我遇到了一个问题:如何获取正在呈现的页面的标题?覆盖process_template_response?我可以在那里得到{% block title %}吗? -
我认为第二种服务器端方式是使用模板标签。在最简单的情况下,它应该看起来像
{% block title %}{% last_visited _("Page title") %}{% endblock %}。 -
第三种愚蠢的方法:制作一个 ajax 脚本,它将当前用户打开的带有标题的页面推送到他的会话中。所以,这个方法只会避免我们获取页面标题。
我认为,正确的方法是从中间件的模板上下文中获取 title 块。我该怎么做?
谢谢。
更新
使用templates 和django.cache 实现第二种方法制作gist。最简单的用法:
{% block title %}{% save_visited _("Profile setup") %}{% endblock %}
...
{% load_visited 'visited' %}
{% for title, uri, dt in visited %}
<a href="{{ uri }}">{{ title }} {% trans "at" %} {{ dt }}</a><br/>
{% endfor %}
另外,我还在寻找一种方法,允许在中间件中获取页面的{% block title %}。当然,我可以使用 lxml 解析器并在 process_response 方法中获取 title,但这是一个丑陋的矫枉过正。
感谢您的建议。
【问题讨论】:
-
您只想跟踪他们打开的最后一个论坛帖子吗?在这种情况下,它只是您有兴趣跟踪的单个视图 - 论坛详细信息页面?使用它,您可以轻松地将页面添加到用户会话
-
我想制作一个可重复使用的应用程序,让用户能够查看他的网站历史记录,这样他就可以快速返回。如果它类似于 ajax,用户可以从另一个会话(如果应用程序使用带有 user.id 键的缓存)、另一个选项卡等返回。这不仅仅是“记住这个话题”。
标签: python django django-templates django-middleware django-context