我有一个与论坛非常相似的应用程序。用户可以参与发布内容。当用户单击某个主题时,它会转到该主题页面,该页面显示与该主题相关的所有讨论。我有一个侧边栏,就像在stackoverflow中显示similar questions
一样,它显示了与当前页面中主题标题相关的主题。
以下是侧边栏模板代码:
<div class="box">
<h2>{% trans %}Related Topics{% endtrans %}</h2>
<div class="topic-related">
{% for thread_dict in similar_threads.data() %}
<p>
<a href="{{ thread_dict.url }}">{{ thread_dict.title|escape }}</a>
</p>
{% endfor %}
</div>
</div>
我有一个跟踪用户点击的应用程序。假设用户访问了某个主题,在看到相关主题后,她点击了主题并转到该页面。但我无法区分用户是否直接使用此主题而不是使用相关主题部分。
所以我想我可以在网址的末尾添加fromRelatedTOpics
之类的东西。实现这一目标的最佳方法是什么?
<a href="{{ thread_dict.url(fromRelatedTopics) }}">{{ thread_dict.title|escape }}</a>
这可能吗?
答案 0 :(得分:0)
您要查找的关键字是 referer 。如果用户单击了指向您站点的链接,则引用者可能会告诉您他来自哪里(这取决于浏览器设置)。要从视图访问引用者,您必须访问请求的META
属性,即:
request.META.get('HTTP_REFERER')
您可能希望了解this django snippet以获得灵感。
如果您想在模板中使用此信息,可以尝试:
{{ request.META.HTTP_REFERER }}
答案 1 :(得分:0)
您可以做的是将所有点击重定向到“相关主题”到单个视图,同时将相关主题ID(或任何可以在后端标识该主题的唯一值)传递给此视图。
现在无论何时执行此视图,您都可以安全地假设有人点击了“相关主题”,因此请记录此行为。使用 referer (如@steinar所述),您还可以记录从中点击相对链接的父页面URL。
记录行为后,您可以使用传递给此视图的唯一ID将用户重定向到“相关主题”。