python之路_保留原搜索页面条件
保留原搜索条件的总体思路是在展示页面中,获取去url中的相关搜索条件参数,将此参数保留存放在页面中如编辑或者删除按钮的链接路径中,实现编辑或者删除后,视图再次获得url之前保存的页面搜索相关参数,与重定向url拼接后 ,即可实现原路返回原页面位置。
具体介绍如下:
''' 实现方式一:列表页面:获取当前所有条件,添加到 - 编辑按钮的URL后面- 添加按钮的URL后面编辑或添加页面:- POST提交时,获取原来列表页面传过来的条件- 拼接URL /hosts/?原来的条件list页面:list_condition = request.GET.urlencode(){% for item in host_list %}<li>{{ item }} <a href="/edit/{{id}}/?{{ list_condition }}">编辑</a></li>{% endfor %}add/edit页面:http://127.0.0.1:8000/edit/10/?page=5&id__gt=4def edit_host(request,pk):if request.method == "GET":return render(request,'edit_host.html')else:# 修改成功 /hosts/?page=5&id__gt=4url = "/hosts/?%s" %(request.GET.urlencode())return redirect(url)实现方式二:(更安全)list页面: http://127.0.0.1:8000/hosts/?page=5&id__gt=4params = QueryDict(mutable=True)params['_list_filter'] = request.GET.urlencode()list_condition = params.urlencode(){% 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/54/?_list_filter=page%3D5%26id__gt%3D4def edit_host(request,pk):if request.method == "GET":return render(request,'edit_host.html')else:# 修改成功 /hosts/?page=5&id__gt=4url = "/hosts/?%s" %(request.GET.get('_list_filter'))return redirect(url) '''
说明:如请求路径为http://127.0.0.1:8000/hosts/?page=5&id__gt=4,request.GET.urlencode()获得请求路径中的整体条件page=5&id__gt=4,request.GET结果是QueryDict数据类型,默认QueryDict数据类型不可编辑,但是如(params = QueryDict(mutable=True))设置mutable=True,QueryDict数据类型将变得可编辑。分如下两种情况:
#1、已有QueryDict设置: request.GET #(QueryDict对象) request.GET._mutable = True#2、新建QueryDict设置: params = QueryDict(mutable=True)
应用实例:
渲染页面编辑按钮函数:
from django.http import QueryDict def edit(self,obj=None,is_header=False):if is_header:return '编辑'query_str = self.request.GET.urlencode() # page=2&nid=1if query_str:params = QueryDict(mutable=True)params[self._query_param_key] = query_strreturn mark_safe('<a href="%s?%s">编辑</a>' %(self.get_change_url(obj.id),params.urlencode(),)) # /stark/app01/userinfo/return mark_safe('<a href="%s">编辑</a>' % (self.get_change_url(obj.id),)) # /stark/app01/userinfo/
处理编辑页面的视图函数:
def change_view(self,request,nid,*args,**kwargs):# self.model_class.objects.filter(id=nid)obj = self.model_class.objects.filter(pk=nid).first()if not obj:return redirect(self.get_list_url())model_form_class = self.get_model_form_class()# GET,显示标签+默认值if request.method == 'GET':form = model_form_class(instance=obj)return render(request,'stark/change_view.html',{'form':form})else:form = model_form_class(instance=obj,data=request.POST)if form.is_valid():form.save()list_query_str = request.GET.get(self._query_param_key)list_url = "%s?%s" %(self.get_list_url(),list_query_str,)return redirect(list_url)return render(request, 'stark/change_view.html', {'form': form})
转载于:https://www.cnblogs.com/seven-007/p/8512152.html
python之路_保留原搜索页面条件相关推荐
- python之路_自定义属性、json及其他js补充
一.自定义属性 我们知道,在前端页面渲染的过程中,我们可能会需要用到一些后端传来的参数,这种参数的获取我们一般是通过模板语言渲染得到.但是当这些参数是在js文件中被用到(js代码若是单独以文件形式被引 ...
- python之路_面向对象
1 >>> dict #类型dict就是类dict 2 <class 'dict'> 3 >>> d=dict(name='egon') #实例化 4 ...
- python爬虫 爬取淘宝搜索页面商品信息数据
主要使用的库: requests:爬虫请求并获取源码 re:使用正则表达式提取数据 json:使用JSON提取数据 pandas:使用pandans存储数据 以下是源代码: #!coding=utf- ...
- python之路_文件操作解析
文件操作 一.操作文件三要素 1. 路径 #文件存放的具体位置的路径 2. 编码 #文件打开的的编码格式:utf-8 3. 模式 - rb:以字节的方式只读 obj = open('D:\ ...
- python的字符串_百度资讯搜索_python的字符串
澎湃新闻 8小时前该扩展利用可处理编程语言和自然语言的预训练模型 CodeBERT,实现快速生成 Python 文档字符串的功能. Visual Studio Code(简称 VS Code)是一个由 ...
- python招生海报_从原研哉的哲学中学习海报设计
提及平面设计界的大师,原研哉是其中我最敬仰的一位,我非常喜欢原研哉的设计作品,他的设计既简单却蕴含丰富的情感.每当我们谈及原研哉的设计理念时,总 会谈及到"白"."触知& ...
- python批处理代码_【原创源码】【python】python文本文件批处理
[Python] 纯文本查看 复制代码import os import shutil def text_edit_vhd(filepath): with open(filepath,'r+') as ...
- python人脸姿态_(原)人脸姿态识别Fine-Grained Head Pose EstimationWithout Keypoints
转载请注明出处: 论文: Fine-Grained Head Pose EstimationWithout Keypoints 论文网址: 官方pytorch网址: 说明:该代码是pytorch早期的 ...
- python之路_计算机编码及运算符介绍
1. Pycharm使用 2. 字符串格式化 作用:将数字和字符串相结合 占位符:%s代表字符串,%d代表整数类型 格式: #实例1msg = "我叫%s,年龄是%d,爱好%s&qu ...
- python之路_前端基础之Bootstrap 组件
文档内容参考地址:http://v3.bootcss.com/components/ 一.图标 如下例,Star文本前有一个空格: <button type="button" ...
最新文章
- C#生成CHM文件(外篇使用hha.dll)
- java php mysql_系统学习javaweb13----MYSQL学习(使用PHP、SQL)1
- SQL查询表对应的外键约束
- DES/3DES/AES区别
- Ajax[Mount]
- System.arraycopy 和Arrays.copyOf
- ext 从头开始 extjs 控件 触发事件 的几种方式
- Android Studio MAT内存分析初探
- 安装SAP Business One对软硬件有哪些要求
- mysql 已存在数据_MySQL跳过已存在的数据
- 蚂蚁金服资深技术专家经国:云原生时代微服务的高可用架构设计
- python动态规划算法最大k乘积_C语言使用DP动态规划思想解最大K乘积与乘积最大问题...
- 【报告分享】2020年小红书内容生态报告.pdf(附下载链接)
- Android:复杂listview条目
- sklearn 模型选择和评估
- python如何屏幕截图_Python实现屏幕截图的两种方式
- 有道云笔记分享_有道云笔记
- 西门子低代码项目团队协作方法
- html涟漪动画效果,CSS 在按钮上做个涟漪效果(Ripple Animation)
- 组学数据上传(五):代谢组学数据
热门文章
- matlab 数字基带,基于MATLAB的数字基带传输的 FIR滤波器的设计
- weui实现微信网页模板(主页,购物车,分类,后台等等)
- 7-7Hadoop学习之常用Linux命令与集群配置
- win10 Hyper-V 虚拟机 装 boot2docker
- FreeMarker 模板引擎快速入门 与 生成Word文档终极解决方案
- Java 枚举(enum)剖析
- Location 对象操作 URL 使用详解
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第2节 maven的安装和仓库种类_04maven的安装...
- 百度地图电子围栏功能的实现
- ZT:Linux上安装JDK,最准确