Django保存搜索条件知识点

QueryDict
    #request.GET['XXX']=123
    print(type(request.GET))
    from django.http.request import QueryDict
    print(request.GET)
    import copy
    params = copy.deepcopy(request.GET)
    params = ['xxx']=123
    print('params',params)
    print(params.urlencode())  # 'a=1&b=2&xxx=3'

注: 通过url方法,将request.GET获取到的数据转化成字符串

转载于:https://www.cnblogs.com/apollo1616/articles/9922807.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中,ListView是一个方便的视图类,用于显示一个对象的列表。要在ListView中保持搜索条件,你可以使用Django的Session来存储搜索参数,并在每次请求时从Session中获取这些参数。 下面是一个简单的示例,演示了如何在ListView中保持搜索条件: ```python from django.views.generic import ListView from django.shortcuts import redirect from django.contrib import messages class YourListView(ListView): model = YourModel template_name = 'your_template.html' paginate_by = 10 def get_queryset(self): queryset = super().get_queryset() # 获取搜索参数 search_query = self.request.GET.get('q') if search_query: # 将搜索参数存储在Session中 self.request.session['search_query'] = search_query messages.success(self.request, '搜索结果') else: # 清除Session中的搜索参数 self.request.session.pop('search_query', None) return queryset def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) # 从Session中获取搜索参数并传递给模板 context['search_query'] = self.request.session.get('search_query', '') return context def get(self, request, *args, **kwargs): # 检查是否有搜索参数,如果没有则重定向到当前页 if not self.request.GET.get('q') and self.request.session.get('search_query'): return redirect(request.path + '?q=' + self.request.session['search_query']) return super().get(request, *args, **kwargs) ``` 在上面的示例中,我们首先在`get_queryset()`方法中获取搜索参数,然后将其存储在Session中。我们还使用`messages`框架显示一个成功消息。如果没有搜索参数,则从Session中删除搜索参数。 在`get_context_data()`方法中,我们从Session中获取搜索参数,并将其传递给模板。这样,我们可以在模板中访问搜索参数并在搜索框中显示它。 在`get()`方法中,我们检查是否有搜索参数。如果没有搜索参数但是Session中有保存搜索参数,我们将重定向到当前页,并附加保存搜索参数。 这样,每次请求ListView时,搜索条件都会被保持并显示在页面上。你可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值