设为首页 加入收藏

TOP

django-request对象(二)
2017-09-30 16:41:56 】 浏览:4639
Tags:django-request 对象
;—— 客户端的IP 地址。
  • REMOTE_HOST —— 客户端的主机名。
  • REMOTE_USER —— 服务器认证后的用户。
  • REQUEST_METHOD —— 一个字符串,例如"GET" 或"POST"
  • SERVER_NAME —— 服务器的主机名。
  • SERVER_PORT —— 服务器的端口(是一个字符串)。
  •    从上面可以看到,除 CONTENT_LENGTH 和 CONTENT_TYPE 之外,请求中的任何 HTTP 首部转换为 META 的键时,都会将所有字母大写并将连接符替换为下划线最后加上 HTTP_  前缀。所以,一个叫做 X-Bender 的头部将转换成 META 中的 HTTP_X_BENDER 键。

     

    13.HttpRequest.user

      一个 AUTH_USER_MODEL 类型的对象,表示当前登录的用户。

      如果用户当前没有登录,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 中间件时才可用。

    -------------------------------------------------------------------------------------

    匿名用户

    class models.AnonymousUser

    django.contrib.auth.models.AnonymousUser 类实现了django.contrib.auth.models.User 接口,但具有下面几个不同点:

    • id 永远为None
    • username 永远为空字符串。
    • get_username() 永远返回空字符串。
    • is_staff 和 is_superuser 永远为False
    • is_active 永远为 False
    • groups 和 user_permissions 永远为空。
    • is_anonymous() 返回True 而不是False
    • is_authenticated() 返回False 而不是True
    • set_password()check_password()save() 和delete() 引发 NotImplementedError
    New in Django 1.8:

    新增 AnonymousUser.get_username() 以更好地模拟 django.contrib.auth.models.User

     

    14.HttpRequest.session

       一个既可读又可写的类似于字典的对象,表示当前的会话。只有当Django 启用会话的支持时才可用。完整的细节参见会话的文档

     

    15.HttpRequest.urlconf

      不是由Django 自身定义的,但是如果其它代码(例如,自定义的中间件类)设置了它,Django 就会读取它。如果存在,它将用来作为当前的请求的Root URLconf,并覆盖 ROOT_URLCONF 设置。

     

    16.HttpRequest.resolver_match

      一个 ResolverMatch 的实例,表示解析后的URL。这个属性只有在 URL 解析方法之后才设置,这意味着它在所有的视图中可以访问,但是在 URL 解析发生之前执行的中间件方法中不可以访问(比如process_request,但你可以使用 process_view 代替)。

     


    方法:

    1.HttpRequest.get_host()

      根据从HTTP_X_FORWARDED_HOST(如果打开 USE_X_FORWARDED_HOST,默认为False)和 HTTP_HOST 头部信息返回请求的原始主机。如果这两个头部没有提供相应的值,则使用SERVER_NAME 和SERVER_PORT,在PEP 3333 中有详细描述。

      USE_X_FORWARDED_HOST:一个布尔值,用于指定是否优先使用 X-Forwarded-Host 首部,仅在代理设置了该首部的情况下,才可以被使用。

      例如:"127.0.0.1:8000"

      注意:当主机位于多个代理后面时,get_host() 方法将会失败。除非使用中间件重写代理的首部。

     

    2.HttpRequest.get_full_path()

      返回 path,如果可以将加上查询字符串。

      例如:"/music/bands/the_beatles/?print=true"

     

    3.HttpRequest.build_absolute_uri(location)

      返回location 的绝对URI。如果location 没有提供,则使用request.get_full_path()的返回值

      如果URI 已经是一个绝对的URI,将不会修改。否则,使用请求中的服务器相关的变量构建绝对URI。

      例如:"http://example.com/music/bands/the_beatles/?print=true"

     

    4.HttpRequest.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)

      返回签名过的Cookie 对应的值,如果签名不再合法则返回django.core.signing.BadSignature

      如果提供 default 参数,将不会引发异常并返回 default 的值。

      可选参数salt 可以用来对安全密钥强力攻击提供额外的保护。max_age 参数用于检查Cookie 对应的时间戳以确保Cookie 的时间不会超过max_age&nbs

    首页 上一页 1 2 3 下一页 尾页 2/3/3
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇django-QueryDict 对象 下一篇python类及其方法

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目