2

我正在编写基于 django 的论坛,并且我认为它适合用户浏览他的最后一页。此外,用户跟踪中间件可以很好地帮助提出建议等。

  1. 我认为,最简单的方法是使用Django Middleware,但我遇到了一个问题:如何获取正在呈现的页面的标题?覆盖process_template_response?我能到{% block title %}那里吗?

  2. 我认为第二种服务器端方式是使用模板标签。在最简单的情况下,它应该看起来像{% block title %}{% last_visited _("Page title") %}{% endblock %}.

  3. 第三种,愚蠢的方法:制作一个ajax脚本,将当前用户打开的带有标题的页面推送到他的会话中。因此,这种方法只会避免我们获取页面标题。

title我认为,正确的方法是从中间件的模板上下文中获取块。我该怎么做?

谢谢。

更新

用和实现第二种方法作了要点。最简单的用法:templatesdjango.cache

{% 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解析器并获取title方法process_response,但它是一个丑陋的矫枉过正。

感谢您的任何建议。

4

1 回答 1

0

在您的情况下,我将使用稍微修改的第二种方法:

{% last_visited  current_page_title  current_page_url  num %}

这将做两件事:

  1. 将当前标题和 url 存储在会话变量中(上次访问页面的列表)
  2. 从同一个会话变量中渲染最后访问的页面数
于 2013-08-09T11:27:47.440 回答