我有一个django listview正常工作 .
它接收url参数来过滤数据 . 它的分页 .
现在,我想在用户会话中维护这些数据 . (页码和网址参数) .
例:
-
我在产品列表视图中 .
-
我搜索'foo'
-
我选择了第2页
-
然后,我点击任何产品细节 .
-
页面将重定向到详细视图 .
当我返回产品列表视图时,我想保留搜索参数'foo'并选择第2页 .
有什么更好的方法呢?
我正在使用Django 2.0.6
Models.py
class Product(models.Model):
name= models.CharField(_('name'), max_length=150)
price = models.DecimalField(max_digits=10, decimal_places=2, default=0.0)
Views.py
class ProductList(ListView):
model = Product
paginated_by = 10
def get_queryset(self):
queryset = Product.objects.all()
name = self.request.GET.get('name', None)
if name:
queryset = queryset.filter(name__icontains=name)
return queryset
Urls.py
path('products/', views.ProductList.as_view(), name='product_list'),
1 回答
为此,您必须将URL作为get请求,以便您可以从URL中获取get值并在过滤器中使用它们来维护您的选择,如:
然后在您的Django视图中,您可以通过
request.GET.get('variable')
访问它并将其作为HTML呈现页面中的上下文传递,然后在筛选器选择中使用该变量 .Setting variable in session:
要在会话中设置变量,您可以通过以下方式设置它:
并且可以通过以下方式检索此值:
你可以参考this docs .