Django request
- '''
- 1.HttpRequest.GET
- 一个类似于字典的对象,包含 HTTP GET 的所有参数。详情请参考 QueryDict 对象。
- 2.HttpRequest.POST
- 一个类似于字典的对象,如果请求中包含表单数据,则将这些数据封装成 QueryDict 对象。
- POST 请求可以带有空的 POST 字典 —— 如果通过 HTTP POST 方法发送一个表单,但是表单中没有任何的数据,QueryDict 对象依然会被创建。
- 因此,不应该使用 if request.POST 来检查使用的是否是POST 方法;应该使用 if request.method == "POST"
- 另外:如果使用 POST 上传文件的话,文件信息将包含在 FILES 属性中。
- 注意:键值对的值是多个的时候,比如checkbox类型的input标签,select标签,需要用:
- request.POST.getlist("hobby")
- 3.HttpRequest.body
- 一个字符串,代表请求报文的主体。在处理非 HTTP 形式的报文时非常有用,例如:二进制图片、XML,Json等。
- 但是,如果要处理表单数据的时候,推荐还是使用 HttpRequest.POST 。
- 4.HttpRequest.path
- 一个字符串,表示请求的路径组件(不含域名)。
- 例如:"/music/bands/the_beatles/"
- 5.HttpRequest.method
- 一个字符串,表示请求使用的HTTP 方法。必须使用大写。
- 例如:"GET"、"POST"
- 6.HttpRequest.encoding
- 一个字符串,表示提交的数据的编码方式(如果为 None 则表示使用 DEFAULT_CHARSET 的设置,默认为 'utf-8')。
- 这个属性是可写的,你可以修改它来修改访问表单数据使用的编码。
- 接下来对属性的任何访问(例如从 GET 或 POST 中读取数据)将使用新的 encoding 值。
- 如果你知道表单数据的编码不是 DEFAULT_CHARSET ,则使用它。
- 7.HttpRequest.META
- 一个标准的Python 字典,包含所有的HTTP 首部。具体的头部信息取决于客户端和服务器,下面是一些示例:
- 取值:
- CONTENT_LENGTH —— 请求的正文的长度(是一个字符串)。
- CONTENT_TYPE —— 请求的正文的MIME 类型。
- HTTP_ACCEPT —— 响应可接收的Content-Type。
- HTTP_ACCEPT_ENCODING —— 响应可接收的编码。
- HTTP_ACCEPT_LANGUAGE —— 响应可接收的语言。
- HTTP_HOST —— 客服端发送的HTTP Host 头部。
- HTTP_REFERER —— Referring 页面。
- HTTP_USER_AGENT —— 客户端的user-agent 字符串。
- QUERY_STRING —— 单个字符串形式的查询字符串(未解析过的形式)。
- REMOTE_ADDR —— 客户端的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 键。
- 8.HttpRequest.FILES
- 一个类似于字典的对象,包含所有的上传文件信息。
- FILES 中的每个键为<input type="file" name="" /> 中的name,值则为对应的数据。
- 注意,FILES 只有在请求的方法为POST 且提交的<form> 带有enctype="multipart/form-data" 的情况下才会
- 包含数据。否则,FILES 将为一个空的类似于字典的对象。
- 9.HttpRequest.COOKIES
- 一个标准的Python 字典,包含所有的cookie。键和值都为字符串。
- 10.HttpRequest.session
- 一个既可读又可写的类似于字典的对象,表示当前的会话。只有当Django 启用会话的支持时才可用。
- 完整的细节参见会话的文档。
- 11.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。
- */
Django request的更多相关文章
- django - request.POST和request.body获取值时出现的情况
django request.POST / request.body 当request.POST没有值 需要考虑下面两个要求 1.如果请求头中的: Content-Type: application/ ...
- django request bug
bug描述:django请求request接收数据时,如果参数中包含分号时,会导致分号后面的消息丢失. 比如前台js调用代码 $.post('/get_params', { "A" ...
- python - django (request 获取 访问者的 IP)
使用 Django 获取访问者的 IP if request.META.get('HTTP_X_FORWARDED_FOR'): ip = request.META.get("HTTP_X_ ...
- Python - Django - request 对象
request.method: 获取请求的方法,例如 GET.POST 等 views.py: from django.shortcuts import render, HttpResponse # ...
- Django request对象与ORM简介
form表单 form表单默认是以get请求提交数据的 http://127.0.0.1:8000/login/?username=admin&password=123 action参数 1. ...
- django request对象和HttpResponse对象
HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外)HttpRequest.scheme 请求方案(通常为http或https)HttpRequest.body 字 ...
- django - request.raw_post_data 与 request.body
request.raw_post_data 重命名成了 request.body - 在1.3版本之后. 这是当时 起票 的讨论内容:https://code.djangoproject.com/ti ...
- Django request 常用属性
一.request属性 path 获取url全路径(出去域名外) 用法: request.path GET 用户所有的get内容以字典的形式存储 例:{'name':'alan'} 用法: data ...
- Django Request 与Response对象
Django使用请求和响应对象在系统中传递状态.当请求页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据. 然后Django加载适当的视图,将HttpRequest作为 ...
随机推荐
- linux系统相关参数查询(内存,磁盘,CPU)
1.服务器型号:dmidecode -s system-product-name 出厂日期:dmidecode -s bios-release-date 2.磁盘大小:parted -l 3.物理内存 ...
- 什么?Java9这些史诗级更新你都不知道?Java9特性一文打尽!
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 编译u-boot时候,make distclean 出现rm:无法删除,****是一个目录
今天在编译u-boot的时候,make distclean,出现了rm:无法删除 "include/asm-arm/arch": 是一个目录.经过查看网友的解决办法,已经解决了. ...
- SpringBoot+MyBatis整合报错Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
项目启动的时候报这个错误,这个问题我百度了一天,果然不出意外的还是没能解决,其中有一篇文章相对来说还是有点用的:https://blog.csdn.net/qq8693/article/details ...
- 第5篇 Scrum冲刺博客
1.站立式会议 1.1 会议图片 1.2 项目进展 成员 昨日任务 今日计划完成任务 陈忠明 歌曲信息的上传/下载包 歌曲批量下载压缩包 吴茂平 完善评论系统 新消息提醒功能设计 黄海钊 修改代码规范 ...
- 如何使用python移除/删除非空文件夹?
移除/删除非空文件夹/目录的最有效方法是什么? 1.标准库参考:shutil.rmtree. 根据设计,rmtree在包含只读文件的文件夹树上失败.如果要删除文件夹,不管它是否包含只读文件,请使用 i ...
- pytest与Allure集成
1.窗口的方式 重启jenkins,重新连接,继续上次的内容.(注意:点击launch,重新下载slave-agent文件,然后双击slave-agent文件进行连接.上次下载的slave-agent ...
- 常见面试题之操作系统中的LRU缓存机制实现
LRU缓存机制,全称Least Recently Used,字面意思就是最近最少使用,是一种缓存淘汰策略.换句话说,LRU机制就是认为最近使用的数据是有用的,很久没用过的数据是无用的,当内存满了就优先 ...
- ZK的watch机制
1.watcher原理框架 由图看出,zk的watcher由客户端,客户端WatchManager,zk服务器组成.整个过程涉及了消息通信及数据存储. zk客户端向zk服务器注册watcher的同时, ...
- 让这个Java语言的开源商城系统火起来
Java是一门非常优秀的面向对象编程语言,功能强大且简单易用,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,凭借其简单性.面向对象.分布式.健壮性.安全性.平台独立与可 ...