django-QueryDict对象

视图中,用户发送的get与post请求数据,都被封装为QueryDict对象了

认识一下QueryDict对象

该对象类似于一个字典

QueryDict源码

class QueryDict(MultiValueDict):
    """
    A specialized MultiValueDict which represents a query string.

    A QueryDict can be used to represent GET or POST data. It subclasses
    MultiValueDict since keys in such data can be repeated, for instance
    in the data from a form with a <select multiple> field.

    By default QueryDicts are immutable, though the copy() method
    will always return a mutable copy.

    Both keys and values set on this class are converted from the given encoding
    (DEFAULT_CHARSET by default) to str.
    """

    # These are both reset in __init__, but is specified here at the class
    # level so that unpickling will have valid values
    _mutable = True
    _encoding = None

    def __init__(self, query_string=None, mutable=False, encoding=None):
        super().__init__()
        self.encoding = encoding or settings.DEFAULT_CHARSET
        query_string = query_string or ''
        parse_qsl_kwargs = {
            'keep_blank_values': True,
            'fields_limit': settings.DATA_UPLOAD_MAX_NUMBER_FIELDS,
            'encoding': self.encoding,
        }
        if isinstance(query_string, bytes):
            # query_string normally contains URL-encoded data, a subset of ASCII.
            try:
                query_string = query_string.decode(self.encoding)
            except UnicodeDecodeError:
                # ... but some user agents are misbehaving :-(
                query_string = query_string.decode('iso-8859-1')
        for key, value in limited_parse_qsl(query_string, **parse_qsl_kwargs):
            self.appendlist(key, value)
        self._mutable = mutable

注释的翻译

一种表示查询字符串的专用多值专家。
querydict可用于表示get或post数据。IT子类
例如,由于这些数据中的键可以重复,所以多值医学
在表单的数据中有一个字段。
默认情况下,querydict是不可变的,尽管copy()方法
将始终返回可变副本。
此类上设置的键和值都是从给定的编码转换而来的
(默认字符集)到str。

QueryDict类创建的对象

》实例化QueryDict的时候,传参注意

参数格式类似于get请求的格式
在这里插入图片描述

QueryDict与字典的相似之处

》取值,两种方式

字典【键】

在这里插入图片描述

字典.get(键)

在这里插入图片描述

》取的值不存在时

字典【键】,会报错
在这里插入图片描述

字典.get(键),不报错,返回一个None

在这里插入图片描述

也可以设置一个默认的返回值

这些用法同python字典一模一样
在这里插入图片描述

QueryDict与字典不同之处

》关注键对应的值

在这里插入图片描述

关注,name键对应的值,好像是列表

然而,取值的时候,拿到的却不是列表

在这里插入图片描述

》字典的一个键只对应一个值

如果再次给键值,覆盖操作

在这里插入图片描述

》QueryDict字典的一个键可以有多个值

在这里插入图片描述

取值的时候,会得到键所对应的列表里,最未位的数据

当前a键对应的列表,最未位值为 ‘3’

在这里插入图片描述

》要获取键所对应的完整的列表

QueryDict对象.getlist(键)

在这里插入图片描述

》什么情况下需要取出这样的列表?

我们提交多选框的数据时,就会一次传过去多个数据

试一试,checkbox多选的传参,看看get请求的结果

在这里插入图片描述

在这里插入图片描述

最后

QueryDict的特性理解后

对于视图中的

request.GET

request.POST

等等类型的操作,就可以更清晰了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值