zoukankan      html  css  js  c++  java
  • 菜鸟初识python request属性及方法说明

    if  request.REQUEST.has_key('键值'):

    HttpRequest对象的属性

    参考:

    表 H-1. HttpRequest对象的属性

    属性

    描述

    path

    表示提交请求页面完整地址的字符串,不包括域名,如"/music/bands/the_beatles/"。

    method

    表示提交请求使用的HTTP方法。它总是大写的。例如:

    if request.method == 'GET':

        do_something()

    elif request.method == 'POST':

        do_something_else()

    GET

    一个类字典对象,包含所有的HTTP的GET参数的信息。见 QueryDict文档。

    POST

    一个类字典对象,包含所有的HTTP的POST参数的信息。见 QueryDict文档。

    通过POST提交的请求有可能包含一个空的 POST字典,也就是说, 一个通过POST方法提交的表单可能不包含数据。因此,不应该使用ifrequest.POST 来判断POST方法的使用,而是使用 if request.method == "POST" (见表中的 method 条目)。

    注意: POST 并不 包含文件上传信息。见 FILES。

    REQUEST

    为了方便而创建,这是一个类字典对象,先搜索 POST ,再搜索 GET 。 灵感来自于PHP的 $_REQEUST 。

    例如, 若 GET = {"name": "john"}, POST = {"age": '34'} ,REQUEST["name"] 会是 "john" , REQUEST["age"] 会是 "34" 。

    强烈建议使用 GET 和 POST,而不是 REQUEST 。这是为了向前兼容和更清楚的表示。

    COOKIES

    一个标准的Python字典,包含所有cookie。键和值都是字符串。cookie使用的更多信息见第12章。

    FILES

    一个类字典对象,包含所有上传的文件。 FILES 的键来自 <input type="file" name="" /> 中的 name。 FILES 的值是一个标准的Python字典,包含以下三个键:

    filename :字符串,表示上传文件的文件名。

    content-type :上传文件的内容类型。

    content :上传文件的原始内容。

    注意 FILES 只在请求的方法是 POST,并且提交的 <form> 包含enctype="multipart/form-data"时才包含数据。否则, FILES 只是一个空的类字典对象。

    META

    一个标准的Python字典,包含所有有效的HTTP头信息。有效的头信息与客户端和服务器有关。这里有几个例子:

    CONTENT_LENGTH: 指定包含于请求或响应中数据的字节长度。

    CONTENT_TYPE:标明发送或者接收的实体的MIME类型。

    QUERY_STRING :未解析的原始请求字符串。

    REMOTE_ADDR :客户端IP地址。

    REMOTE_HOST :客户端主机名。

    SERVER_NAME :服务器主机名。

    SERVER_PORT :服务器端口号。

    在 META 中有效的任一HTTP头信息都是带有 HTTP_前缀的键,例如:

    HTTP_ACCEPT_ENCODING :定义客户端可以理解的编码机制。

    HTTP_ACCEPT_LANGUAGE :定义客户端乐于接受的自然语言列表。

    HTTP_HOST :客户端发送的 Host 头信息。

    HTTP_REFERER :被指向的页面,如果存在的。

    HTTP_USER_AGENT :客户端的user-agent字符串。

    HTTP_X_BENDER : X-Bender 头信息的值,如果已设的话。

    user

    一个 django.contrib.auth.models.User 对象表示当前登录用户。 若当前用户尚未登录, user 会设为 django.contrib.auth.models.AnonymousUser 的一个实例。可以将它们与 is_authenticated() 区别开:

    if request.user.is_authenticated():

        # Do something for logged-in users.

    else:

        # Do something for anonymous users.

    user 仅当Django激活 AuthenticationMiddleware时有效。

    关于认证和用户的完整细节,见第12章。

    session

    一个可读写的类字典对象,表示当前session。仅当Django已激活session支持时有效。见第12章。

    raw_post_data

    POST的原始数据。 用于对数据的复杂处理。

    Request对象同样包含了一些有用的方法,见表H-2。

    表 H-2. HttpRequest 的方法

    方法

    描述

    __getitem__(key)

    请求所给键的GET/POST值,先查找POST,然后是GET。若键不存在,则引发异常 KeyError。

    该方法使用户可以以访问字典的方式来访问一个 HttpRequest实例。

    例如, request["foo"] 和先检查 request.POST["foo"] 再检查request.GET["foo"] 一样。

    has_key()

    返回 True 或 False,标识 request.GET 或 request.POST 是否包含所给的键。

    get_full_path()

    返回 path ,若请求字符串有效,则附加于其后。例如,"/music/bands/the_beatles/?print=true"。

    is_secure()

    如果请求是安全的,则返回 True 。也就是说,请求是以HTTPS的形式提交的。




    QueryDict 对象

    在一个 HttpRequest 对象中, GET和POST属性都是 django.http.QueryDict 的实例. QueryDict 是一个类似字典的类,被设计成可以处理同一个键有多个值的情况.这是很必要的,因为有些 HTML 表单元素,特别是``<select multiple="multiple">``,使用一个键来传递多个值

    QueryDict 实例是不可变对象,除非你创建他们的一个拷贝.这意味着你不能直接改变 request.POST 和 request.GET 的值.

    QueryDict 实现了所有的标准字典方法,因为它就是 dictionary 的一个子类.下文中对与标准字典不一致的地方做了标注:

            __getitem__(key) -- 返加给定键的值. 如果该键有多个值, __getitem__ 返回最后一个值.

            __setitem__(key, value) -- 将 key 的值设置为 [value] (一个Python 列表,只有一个元素 value).注意,这个方法象其它字典方法一个拥有副作用,只能被一个可变的 QueryDict 对象调用.(一个通过`` copy()``创建的副本).

            __contains__(key) -- 如果给定键存在,返回 True. 它允许你这么干: if "foo" in request.GET.

            get(key, default) --类似 __getitem__() ,如果该键不存在,返回一个默认值.

            has_key(key)

            setdefault(key, default) -- 类似标准字典的 setdefault(),不同之处在于它内部使用的是 __setitem__().

            update(other_dict) -- 类似标准字典的 update(), 唯一的不同是它将 other_dict 的元素追加到(而不是替换到)当前字典中. 示例:

            >>> q = QueryDict('a=1')
            >>> q = q.copy() # to make it mutable
            >>> q.update({'a': '2'})
            >>> q.getlist('a')
            ['1', '2']
            >>> q['a'] # returns the last
            ['2']

            items() -- 类似标准字典的 items() 方法, 类似 __getitem__() 的逻辑,它使用最后一个值. 示例:

            >>> q = QueryDict('a=1&a=2&a=3')
            >>> q.items()
            [('a', '3')]

            values() -- 类似标准字典的 values() 方法,类似 __getitem__() 的逻辑,它使用最后一个值.示例:

            >>> q = QueryDict('a=1&a=2&a=3')
            >>> q.values()
            ['3']

    除了这些之外,``QueryDict`` 还拥有下列方法:

            copy() -- 返回当前对象的一个拷贝,它使用标准库中的 深拷贝 方法. 这个拷贝是可变的,也就是说你可以改变这个拷贝的值.

            getlist(key) -- 以一个Python列表的形式返回指定键的值.若该键不存在,返回一个空的列表.该列表是以某种方式排序的.

            setlist(key, list_) -- 不同于 __setitem__() ,将给定的键的值设置为一个列表.

            appendlist(key, item) -- 将给定键对应的值(别忘了,它是一个列表)追加一个 item.

            setlistdefault(key, default_list) -- 就象 setdefault ,不过它接受一个列表作为值而不是一个单一的值.

            lists() -- 就象 items(),不过它包含所有的值(以列表的方式):

            >>> q = QueryDict('a=1&a=2&a=3')
            >>> q.lists()
            [('a', ['1', '2', '3'])]

            urlencode() -- 以一个查询字符串的形式返回一个字符串. Example: "a=2&b=3&b=5".

    原文出处:http://blog.163.com/power_mr/blog/static/138744007201392492354260/

  • 相关阅读:
    leetcode 576. Out of Boundary Paths 、688. Knight Probability in Chessboard
    leetcode 129. Sum Root to Leaf Numbers
    leetcode 542. 01 Matrix 、663. Walls and Gates(lintcode) 、773. Sliding Puzzle 、803. Shortest Distance from All Buildings
    leetcode 402. Remove K Digits 、321. Create Maximum Number
    leetcode 139. Word Break 、140. Word Break II
    leetcode 329. Longest Increasing Path in a Matrix
    leetcode 334. Increasing Triplet Subsequence
    leetcode 403. Frog Jump
    android中webView加载H5,JS不能调用问题的解决
    通过nginx中转获取不到IP的问题解决
  • 原文地址:https://www.cnblogs.com/testyao/p/5698714.html
Copyright © 2011-2022 走看看