QueryDict对象
1、在HttpRequest对象中,属性GET和POST得到的都是django.http.QueryDict所创建的实例。这是一个django自定义的类似字典的类,这个对象继承于dict,因此用法跟dict相差无几
2、即:HttpRequest对象的GET或POST属性返回的返回值(使用request.GET或request.POST用来获取的前端传递过来的参数),是一个QueryDict对象,这个对象继承于dict,其用法与用法跟dict类似。只是说在某些特定的情况下,用来可能不一致
3、QueryDict对象与dict(字典)的区别:
⑴在python原始的字典中,当一个键出现多个值的时候会发生冲突,只保留最后一个值
⑵而在HTML表单中,通常会发生一个键有多个值的情况,例如<select multiple>(多选框)就是一个很常见情况。这个时候在获取传递过来的QueryDict对象中的值时就不可能说只保留其中一个了,而是需要全部都获取
4、request.POST和request.GET的QueryDict在一个正常的请求/响应循环中是不可变的。若要获得可变的版本,需要使用.copy()方法
例1:Python字典中一键对应多值
a = {"a":1,"b":2}
b = {"A":2,"b":3}
a.update(b)
print(a)
print(b)
"""
{'a': 1, 'b': 3, 'A': 2}
{'b': 3, 'A': 2}
#更新时两个字典中都含有键"b",但是更新后输出结果之后保留后面那个值(将字典b更新到字典a中)
"""
例2:
⑴编辑视图
⑵查看源代码
注:
1、总的来说就是QueryDict对象下面包含了很多方法,这些方法都可以用来处理通过request.GET或request.POST属性获得的QueryDict对象
2、在QueryDict对象方法中最常用的就是get()方法或getlist()方法(主要学习这两个方法)
3、QueryDict对象表示:
⑴前端通过查询字符串(URL)或表单(POST)传递到服务器的参数(数据),Django会把这些参数(数据)打包成一个QueryDict对象,因此可以使用QueryDict对象下的方法来处理这些数据
4、查询字符串参数:http://127.0.0.1:8000/login/?username=zh&password=123456。问号后面的就是查询字符串参数:以键值对形式存在
⑴服务中通过:request.GET.get("键名")获取。未获取到对应的值时返回None
5、表单数据:通过HTML页面中的form标签提交。<input type="password" name="passWord">。前端页面输入框中就是我们要提交的数据
⑴服务中通过:request.POST.get("name属性值")获取(input标签中name属性的值获取)。未获取到对应的值时返回None
例2_1:查询字符串参数