python - 基于 Django 类的 View 在 session 中保留 url 参数

标签 python django django-class-based-views

我有一个运行良好的 Django ListView 。

它接收url参数来过滤数据。 它是分页的。

现在,我想在用户 session 期间维护这些数据。 (页码和 url 参数)。

例子:

  • 我在产品 ListView 中。
  • 我搜索“foo”
  • 我选择第 2 页
  • 然后,我单击任何产品详细信息。
  • 页面将重定向到详细 View 。

当我返回产品 ListView 时,我想保留搜索参数“foo”和选定的第 2 页。

执行此操作的更好方法是什么?

我正在使用 Django 2.0.6

模型.py

class Product(models.Model):
    name= models.CharField(_('name'), max_length=150)
    price = models.DecimalField(max_digits=10, decimal_places=2, default=0.0)

View .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

网址.py

path('products/', views.ProductList.as_view(), name='product_list'),

最佳答案

为此,您必须将 URL 作为获取请求,以便您可以从 URL 获取获取值并在过滤器中使用它们来维护您的选择,例如:

url/?variable=value

然后在您的 Django View 中,您可以通过 request.GET.get('variable') 访问它,并将其作为 HTML 呈现页面中的上下文传递,然后在您的过滤器选择中使用该变量.

在 session 中设置变量:

要在 session 中设置变量,您可以通过以下方式设置它:

request.session['variable'] = 'value' 

这个值可以通过以下方式检索:

if 'variable' in request.session:
    variable1 = request.session['variable']

可以引用this docs .

关于python - 基于 Django 类的 View 在 session 中保留 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51117132/

相关文章:

python - 查找 numpy 数组中的最小值以及该数组行其余部分的对应值

python - 使用 Virtualenv 和 Apache 部署 Django

Django 在更新 View 中获取表单字段的值

python - 使用 Postgis 后端测试 Django 应用程序

django - 如何解决 Django + uWSGI + nginx 堆栈的“找不到 python 应用程序,检查启动日志”错误

python - 如何在 Django 通用 ListView 类中使用 slugfield 创建链接?

基于 Django 类的仅发布 View

javascript - 使用requests-html渲染javascript页面时发生IOError

Python - 将类属性设置为依赖于同一类中其他属性的值

django - 在 Django 中,当 UrlField 被设置为只读时,它会阻止它呈现为可点击的链接。为什么?