如果您在修改呈现数据的原始视图方面受到限制,那么您可以只为特定视图创建一个 href - 从您要重定向用户的每个数据项中 - 计算新 URL,然后重定向用户。
在你的views.py:
from django.http import HttpResponseRedirect
def redirect_view(request, args):
new_url = figure_out_url(args)
return HttpResponseRedirect(new_url)
然后,在您的模板中,对于您希望单击以进入重定向视图的任何项目,请执行
<a href="{% url views.redirect_view args %}">Some data item</a>
显然你需要为这个重定向视图设置你的urlconf,但这似乎应该做你想做的事:
- 用户点击链接
- 新视图根据提供的参数确定重定向 URL
- 用户被重定向到新的 URL
或者(可能是更好的选择),您可以修改在用户单击 URL 的页面上呈现数据的视图,并构建您希望重定向到的 URL(对于每个数据项)并返回它以某种方式在上下文中。例如
{% for item in items %}
<a href="{{ item.url }}">{{ item }}</a>
{% endfor %}
或者,编写一个模板标签,获取数据并输出适当的 URL 以重定向到,然后将其放入 <a> 标签内。例如
{% for item in items %}
<a href="{% get_redirect_url item %}">{{ item }}</a>
{% endfor %}
这些方法只是让页面变成一堆链接,而不需要任何类型的特定重定向视图。
另一种方法是使用 JavaScript,但我认为在这些情况下没有必要。