首先需要知道的一个知识点:

1、request.GET是一个QueryDict类型的,要想取出?后面的结构就用request.GET.urlencode()

2、request.GET默认是不可修改的,需要把params = QueryDict(mutable=True) ,mutable这个参数设置成True

这样就可以修改了。就可以设置值了。

print(type(request.GET))  #<class 'django.http.request.QueryDict'>
from django.http import QueryDict

二、编辑后保留原URl搜索条件

实现方式一:

在列表页面:
获取当前所有条件,添加到
- 编辑按钮的URL后面
- 添加按钮的URL后面
编辑或添加页面:
- POST提交时,获取原来列表页面传过来的条件
- 拼接URL /hosts/?原来的条件 list页面:
views.py list_condition = request.GET.urlencode() #获取当前所有条件
host.html {% for item in host_list %}
<li>{{ item }} <a href="/edit/54/?{{ list_condition }}">编辑</a></li>
{% endfor %} add/edit页面:http://127.0.0.1:8000/edit/10/?page=5&id__gt=4
def edit_host(request,pk):
if request.method == "GET":
return render(request,'edit_host.html')
else:
# 修改成功 /hosts/?page=5&id__gt=4
url = "/hosts/?%s" %(request.GET.urlencode())
return redirect(url)

方式一的不足:
url上可能会有自己的参数,还有列表页面传进来的参数。所以我们要是自己用自己的
要把他们区分开来:那些是编辑页面的参数,那些事列表页面的参数。那么怎么区分呢?
借鉴django源码,吧他们打包成一个字符串,假设叫_list_filter=page=15$id_gt=11$p=666
目标:吧原来的参数打包成一个值,赋值给字典的key
这就引进了第二种方式

实现方式二:

list页面:url格式 http://127.0.0.1:8000/hosts/?page=5&id__gt=4
  views.py
         def host(request):
     params = QueryDict(mutable=True) #创建对象,
     params['_list_filter'] = request.GET.urlencode() #设置值 :吧当前url作为值赋值给_list_filter
     list_condition = params.urlencode() host.html
{% for item in host_list %}
<li>{{ item }} <a href="/edit/54/?{{ list_condition }}">编辑</a></li>
{% endfor %}
add/edit页面 url格式http://127.0.0.1:8000/edit/54/?_list_filter=page%3D5%26id__gt%3D4 def edit_host(request,pk):
if request.method == "GET":
return render(request,'edit_host.html')
else:
# 修改成功 /hosts/?page=5&id__gt=4
url = "/hosts/?%s" %(request.GET.get('_list_filter')) #获取_list_filter值
return redirect(url)

编辑后保留原URl搜索条件的更多相关文章

  1. 4、flask之分页插件的使用、添加后保留原url搜索条件、单例模式

    本篇导航: flask实现分页 添加后保留原url搜索条件 单例模式 一.flask实现分页 1.django项目中写过的分页组件 from urllib.parse import urlencode ...

  2. flask之分页插件的使用、添加后保留原url搜索条件、单例模式

    本篇导航: flask实现分页 添加后保留原url搜索条件 单例模式 一.flask实现分页 1.django项目中写过的分页组件 from urllib.parse import urlencode ...

  3. 用flask实现的添加后保留原url搜索条件

    1.具体实现 #!usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask,render_template,request,r ...

  4. easyui tree 编辑后保留原先状态

    $(function () { var selected = $('#depttree').tree('getSelected'); $('#depttree').tree({ checkbox: f ...

  5. python 全栈开发,Day115(urlencode,批量操作,快速搜索,保留原搜索条件,自定义分页,拆分代码)

    今日内容前戏 静态字段和字段 先来看下面一段代码 class Foo: x = 1 # 类变量.静态字段.静态属性 def __init__(self): y = 6 # 实例变量.字段.对象属性 # ...

  6. thinkphp5 实现搜索分页能下一页保留搜索条件

    正常情况下: 搜索后分页了,点击第二页,进入页面之前的搜索条件没有了. 如代码 $keywords=$this->request->param('keywords'); $this-> ...

  7. 搜索条件两个时间,通过php数组排序,保证select语句between时间 前小后大

    //搜索条件两个时间,通过数组排序,保证select语句between时间 前小后大 $sort_array=[$_POST['clockDate1'],$_POST['clockDate2']]; ...

  8. post表单翻页保存搜索条件

    问题:搜索条件下的数据,进行翻页行为后,搜索条件丢失 1.搜索表单 2.翻页 解决:既然点击页面跳转的a标签使用的方法是GET,而点击“搜索”按钮使用的方法是POST,那么可以让点击a标签实际上就是提 ...

  9. jQuery DataTables添加自定义多个搜索条件

    效果如下: 一.在前台页面定义输入搜索条件的文本框 <div class="ibox-tools"> <span>年度</span> @Html ...

随机推荐

  1. python中的日志操作和发送邮件

    1.python中的日志操作 安装log模块:pip install nnlog 参数:my_log = nnlog.Logger('server_log.log',level='debug',bac ...

  2. 电路板上的元件R,T,D,C,U

    参考链接: https://zhidao.baidu.com/question/194132005.html

  3. Kotlin中三元运算符

    int a = 10;int b = 11;int c = a > b ? a : b; 到了 kotlin中 val a = 10val b = 11val c = if (a > b) ...

  4. MySql cmd下的学习笔记 —— 有关视图的操作(algorithm)

    建立一张简单的查询视图,不用临时表,只用条件合并 在简单的查询中,建立临时表的开销比较大 这是可以指定algorithm选项为merge 在v2的视图中,并没有建立临时表 但在下列情况下,必须建立临时 ...

  5. Linux C++ UDP Socket通信实例

    环境:Linux 语言:C++ 通信方式:UDP 服务器端的步骤如下: 1. socket:      建立一个socket 2. bind:          将这个socket绑定在某个端口上(A ...

  6. 使用ENCKEYS方法加密数据

    要使用这种数据加密方法,您需要配置Oracle GoldenGate以生成加密密钥并将密钥存储在本地ENCKEYS文件中.此方法使用的永久密钥只能通过根据使用加密密钥填充ENCKEYS文件中的说明重新 ...

  7. 关于iframe的相关操作

    1.判断当前页面是否在iframe当中 if (top.location != self.location) { alert("in iframe") }

  8. Python open() 函数

    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=T) 模式 描述 r 以只读方 ...

  9. Faster_RCNN 3.模型准备(下)

    总结自论文:Faster_RCNN,与Pytorch代码: 本文主要介绍代码第二部分:model/ , 首先分析一些主要理论操作,然后在代码分析里详细介绍其具体实现. 首先在参考文章的基础上进一步详细 ...

  10. linux 用户密码到期导致ftp业务失败

    外网反馈某业务失败,查看log发现FTP连接失败,定位发现提示密码不对,重新修改FTP密码后恢复正常. 但同时定位了下FTP密码被修改的原因,发现是密码过期了,因此查了下资料,查得修改过期时间的方法 ...