zoukankan      html  css  js  c++  java
  • Django_视图中的request对象详解(八)

    本文参考:http://www.cnblogs.com/MnCu8261/p/5871085.html

    Request

      我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函数。

     Django 每一个view函数的第一个参数都是request,有没想过request里面到底有什么呢?

     Django使用request和response对象在系统间传递状态。

    当一个页面被请示时,Django创建一个包含请求元数据的 HttpRequest 对象。 然后Django调入合适的视图,把HttpRequest 作为视图函数的第一个参数 传入。每个视图要负责返回一个 HttpResponse 对象。

    HttpRequest实例的属性包含了关于此次请求的大多数重要信息。 除了session外的所有属性都应该认为是只读的.

    我们来看一看这个HttpRequest对象有哪些属性或者方法:

    属性

    1. HttpRequest.scheme

    请求的协议,一般为http或者https,字符串格式(以下属性中若无特殊指明,均为字符串格式)

    2. HttpRequest.body

    http请求的主体,二进制格式。

    3. HttpRequest.path

    所请求页面的完整路径(但不包括协议以及域名),也就是相对于网站根目录的路径。

    4. HttpRequest.path_info

    获取具有 URL 扩展名的资源的附加路径信息。相对于HttpRequest.path,使用该方法便于移植。

    5. HttpRequest.method

    获取该请求的方法,比如: GET   POST .........

    6. HttpRequest.encoding

    获取请求中表单提交数据的编码。

    7. HttpRequest.content_type

    获取请求的MIME类型(从CONTENT_TYPE头部中获取)

    8. HttpRequest.content_params

    获取CONTENT_TYPE中的键值对参数,并以字典的方式表示

    9. HttpRequest.GET

    返回一个 querydict 对象(类似于字典,本文最后有querydict的介绍),该对象包含了所有的HTTP GET参数

    10. HttpRequest.POST

    返回一个 querydict ,该对象包含了所有的HTTP POST参数,通过表单上传的所有  字符  都会保存在该属性中。

    11. HttpRequest.COOKIES

    返回一个包含了所有cookies的字典。

    12. HttpRequest.FILES

    返回一个包含了所有的上传文件的  querydict  对象。通过表单所上传的所有  文件  都会保存在该属性中。key的值是input标签中name属性的值,value的值是一个UploadedFile对象                                          

    13. HttpRequest.META

    返回一个包含了所有http头部信息的字典

    CONTENT_LENGTH – The length of the request body (as a string).
    CONTENT_TYPE – The MIME type of the request body.
    HTTP_ACCEPT – Acceptable content types for the response.
    HTTP_ACCEPT_ENCODING – Acceptable encodings for the response.
    HTTP_ACCEPT_LANGUAGE – Acceptable languages for the response.
    HTTP_HOST – The HTTP Host header sent by the client.
    HTTP_REFERER – The referring page, if any.
    HTTP_USER_AGENT – The client’s user-agent string.
    QUERY_STRING – The query string, as a single (unparsed) string.
    REMOTE_ADDR – The IP address of the client.
    REMOTE_HOST – The hostname of the client.
    REMOTE_USER – The user authenticated by the Web server, if any.
    REQUEST_METHOD – A string such as "GET" or "POST".
    SERVER_NAME – The hostname of the server.
    SERVER_PORT – The port of the server (as a string).

    14  HttpRequest.session

    中间件属性

    15  HttpRequest.site

    中间件属性

    16  HttpRequest.user

    中间件属性,表示当前登录的用户。

    HttpRequest.user实际上是由一个定义在django.contrib.auth.models 中的  user model  类  所创建的对象。

    该类有许多字段,属性和方法。列举几个常用的:        获取更详细信息-->官方文档

    1、字段: 
      username    用户名
      first_name  
      last_name 
      email
      password   
      groups
      user_permissions,
      is_staff     布尔值,标明用户是否可以访问admin页面
      is_superuser 
      last_login  上一次登陆时间
      date_joined     用户创建时间
    
    2、属性  
      is_authenticated   布尔值,标志着用户是否已认证。在django1.10之前,没有该属性,但有与该属性同名的方法。
    
    3、方法
      1  HttpRequest.user.get_username()  注意:方法的圆括号在templates标签中必需省略!!
     获取username。尽量使用该方法来代替使用username字段
      2  HttpRequest.user.get_full_name()  注意:方法的圆括号在templates标签中必需省略!!
     获取first_name和last_name
      3  HttpRequest.user.short_name()  注意:方法的圆括号在templates标签中必需省略!!
     获取first_name
      4  HttpRequest.user.set_password(raw_password)  注意:该方法无法在template标签中使用!!
     设置密码
      5  HttpRequest.user.check_password(raw_password)  注意:该方法无法在template标签中使用!!
     如果raw_password与用户密码相等,则返回True

    方法

    1  HttpRequest.get_host()

    返回请求的源主机。example:  127.0.0.1:8000

    2  HttpRequest.get_port()

    获取端口

    3  HttpRequest.get_full_path()

    返回完整路径,并包括附加的查询信息。example:  "/music/bands/the_beatles/?print=true"

    4  HttpRequest.bulid_absolute_uri(location)

    返回location的绝对uri,location默认为request.get_full_path()。

    Example: "https://example.com/music/bands/the_beatles/?print=true"

    QueryDict

    是一个类似于Python中字典的一种对象,他是Python中字典的子类,所以继承了字典的所有方法,

    当然QueryDict对字典的某些方法进行了加工,并补充了一些独特的方法。这里列出部分方法。详情请看: 官方文档 。

    1  QueryDict.get(key,default=None)   返回key所对应的value,若key不存在,则返回default的值

    2  QueryDict.update(other_dict)   更新

    3  QueryDict.values()   列出所有的值

    4  QueryDict.items()   列出所有的键值对,若一个key有多个值,只显示最后一个值。

    5  QueryDict.pop(key)   删除某个键值对

    6  QueryDict.getlist(key)   根据输入的key返回一个Python中的list

    7  QueryDict.dict()   返回QueryDict的字典的表现形式

  • 相关阅读:
    C语言实现时间差、星期、天数算日期(转)
    windbg 源码调试设置
    Windbg调试命令详解
    突破session 0隔离 和 劫持exe注入(转自梦无极)
    debug : StartService failed, getlasterror = 0x7f(127) 转
    反调试技巧总结-原理和实现
    关于Win7 x64下过TP保护(内核层)(转)
    python将dict中的unicode打印成中文
    Python 获取接口数据,解析JSON,写入文件
    python提取网页中json数据
  • 原文地址:https://www.cnblogs.com/testlearn/p/13940888.html
Copyright © 2011-2022 走看看