Django最后访问了网址列表

时间:2013-08-09 10:55:57

标签: python django django-templates django-middleware django-context

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

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

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

  3. 第三种,愚蠢的方式:制作一个ajax脚本,将当前用户打开的页面带有标题进入他的会话。所以,这种方法只会避免我们获得页面标题。

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

    感谢。

    更新

    使用templatesdjango.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解析器并在title方法中获取process_response,但这是一个丑陋的矫枉过正。

    感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

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

{% last_visited  current_page_title  current_page_url  num %}

会做两件事:

  1. 将当前标题和网址存储在会话变量(最后访问过的网页列表)
  2. 从同一会话变量
  3. 呈现num个最后访问过的页面