2 回答
TA贡献1862条经验 获得超6个赞
为此,您必须将URL作为获取请求,以便可以从URL获取获取值,并在过滤器中使用它们来保持您的选择,例如:
url/?variable=value
然后,在Django视图中,您可以通过访问它,request.GET.get('variable')并将其作为上下文传递到HTML渲染页面中,然后在过滤器选择中使用该变量。
在会话中设置变量:
要在会话中设置变量,可以通过以下方式设置:
request.session['variable'] = 'value'
可以通过以下方式检索此值:
if 'variable' in request.session:
variable1 = request.session['variable']
您可以参考此文档。
TA贡献1963条经验 获得超6个赞
我执行此操作的一个常见技巧是使用GET参数并直接将整个url保存在会话中(与分别保存每个参数相比,它节省了时间)
class ProductList(ListView):
model = Product
paginated_by = 10
def get_queryset(self):
self.request.session['saved_product_list_url'] = self.request.get_full_path()
....
然后,您可以在模板中像这样使用它:
<a href="{% if request.session.saved_product_list_url %}{{ request.session.saved_product_list_url }}{% else %}{% url 'product_list' %}{% endif %}">product list</a>
或在视图中这样:
saved_product_list_url = self.request.session.get('saved_product_list_url')
if saved_product_list_url:
return redirect(saved_product_list_url)
else:
return redirect('product_list')
同样在您的过滤器表单中,您应该添加“重置过滤器”,如下所示:
<a href="{% url 'product_list' %}">reset filters</a>
添加回答
举报