1月27日学习内容整理:stark组件之分页,页码切换可以保存当前URL的数据状态(Querydict类型,深拷贝)
1、request.GET是一个Querydict类型
request.GET.urlencode() 就会把GET中字典形式的数据整合成a=1&b=2&c=3这样的形式带,是字符串类型,也就是GET数据在URL地址中的表现形式
2、自己创建一个Querydict类型
from django.http import QueryDict
d = QueryDict() 这就得到了一个为空的Querydict字典,默认是不可更改的,不能d[key] = value这样添加键值对
要想变为可变的,可以添加键值对,要设置一个参数
d._mutable = True 这样就可以添加键值对了
3、深拷贝
import copy
copy.deepcopy(xxx) 这就是深拷贝
利用自定义的分页组件完成分页
并且分页组件要添加一个属性,就是URL的GET数据,内部再深拷贝这个数据,在生成页码标签时不要写成固定的数据状态,而是保持当前的URL数据状态不变,只有其中对应的页码数变化就可以,这个地方就用到了urlencode方法
编辑功能完成后我们也要返回编辑前的页面,这个时候也要用到urlencode方法,但是要注意编辑前页面的GET数据和编辑后的GET数据可能有重复的字段,所以我们必须把编辑前的GET请求数据先用urlencode打包作为值赋值给一个键,这个键的名字为了避免再次重复可以生僻一点,最后把这个键值对在用urlencode方法打包赋给一个我们自己创建的querydict类型,编辑完成后返回编辑前的页面我们就可以直接用GET.get方法取出我们之前设置的键对应的值,这个值就是编辑前页面的GET请求数据,这时候就可以完全的返回到编辑前的页面了