• django.http.request中QueryDict 对象


    在一个 HttpRequest 对象中, GET 和 POST 属性都是 django.http.QueryDict 的实例。 QueryDict 是一个类似于字典的类,专门用来处理用一个键的多值。当处理一些HTML表单中的元素,特别是 <select multiple="multiple"> 之类传递同一key的多值的元素时,就需要这个类了。

    QueryDict 实例是不可变的,除非创建了一个 copy() 副本。也就是说不能直接更改 request.POST 和 request.GET 的属性。

    QueryDict 实现了所有标准的字典的方法,因为它正是字典的一个子类。与其不同的东西已在下表中列出。

    QueryDicts 与标准字典的区别

    方法

    与标准字典实现的不同

    __getitem__

    与一个字典一样。但是,当一个键有多个值时, __getitem__() 返回最后一个值。

    __setitem__

    将所给键的值设为 [value] (一个只有一个 value 元素的 Python列表)。 注意,因对其它的字典函数有副作用,故它只能被称为一个可变的 QueryDict (通过 copy() 创建)。

    get()

    如果一个键多个值,和 __getitem__ 一样, get() 返回最后一个值。

    update()

    参数是一个 QueryDict 或标准字典。 和标准字典的

    update 不同,这个方法*增加*而不是替换一项内容:

    >>> q = QueryDict('a=1')

    >>> q = q.copy() # 使其可变

    >>> q.update({'a': '2'})

    >>> q.getlist('a')

    ['1', '2']

    >>> q['a'] # 返回最后一个值

    ['2']

    items()

    和标准字典的 items() 方法一样, 不同的是它和 __getitem()__ 一样,返回最后一个值:

    >>> q = QueryDict('a=1&a=2&a=3')

    >>> q.items()

    [('a', '3')]

    values()

    和标准字典的 values() 方法一样, 不同的是它和 __getitem()__ 一样,返回最后一个值。

     

     附加的 (非字典的) QueryDict 方法

    方法

    描述

    copy()

    返回一个对象的副本,使用的是Python标准库中的 copy.deepcopy() 。 该副本是可变的,也就是说,你能改变它的值。

    getlist(key)

    以Python列表的形式返回所请求键的数据。若键不存在则返回空列表。它保证了一定会返回某种形式的list。

    setlist(key, list_)

    将所给键的键值设为 list_ (与 __setitem__() 不同)。

    appendlist(key, item)

    在 key 相关的list上增加 item 。

    setlistdefault(key, l)

    和 setdefault 一样, 不同的是它的第二个参数是一个列表,而不是一个值。

    lists()

    和 items() 一样, 不同的是它以一个列表的形式返回字典每一个成员的所有值。 例如:

    >>> q = QueryDict('a=1&a=2&a=3')

    >>> q.lists()

    [('a', ['1', '2', '3'])]

    urlencode()

    返回一个请求字符串格式的数据字符串(如, "a=2&b=3&b=5" )。

     

  • 相关阅读:
    优化网站性能之数据库架构篇
    使用 P3P 规范让 IE 跨域接受第三方 cookie
    使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署
    将代码库从 SVN 迁移至 Git 并保留所有 commit 记录
    如何高效利用GitHub
    Mysql bin-log日志文件处理
    man手册页
    glibc/libc/blib区别
    列式数据库的简单分析
    Linux中如何设置服务自启动?
  • 原文地址:https://www.cnblogs.com/eric_yi/p/8046651.html
Copyright © 2020-2023  润新知