运维开发笔记整理-Request对象与Response对象
运维开发笔记整理-Request对象与HttpResponse对象
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.request对象
1>.什么是request
首先,我们得知道request对象是有django创建的,并不是我们自己创建的,通过url文件监听相应的路径,如果客户端访问有请求到了该路径,就会将参数自动传递到request对象里面,它默认是一个WSGIRequest对象,我们可以通过python的dir方法看到request有那些属性,如下图所示:

2>.request的属性和方法使用案例
我们可以在views.py视图函数中调试request的相关属性参数,做如下修改:
#!/usr/bin/env python
#_*_conding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ from django.http import HttpResponse def index(request):
print("请求协议:",request.scheme)
print("请求体:",request.body)
print("请求路径",request.path)
print("请求方法:",request.method)
print("请求的字符集",request.encoding)
print("请求的GET属性:",request.GET)
print("请求的POST属性:",request.POST)
print("请求的META属性:",request.META)
return HttpResponse("尹正杰到此一游!")
我们启动项目后,访问相应的路径,会在后端查看到相应的request信息,如下图所示:

除了上面我们可以查看request的属性相关参数,我们还可以查看方法相关的参数,实例代码如下:
#!/usr/bin/env python
#_*_conding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ from django.http import HttpResponse def index(request):
print("获取主机信息:",request.get_host())
print("获取端口信息:",request.get_port())
print("获取路径信息:",request.get_full_path())
print("是否是安全的:",request.is_secure())
print("是否是ajax:",request.is_ajax())
return HttpResponse("尹正杰到此一游!")
启动项目后,我们在浏览器访问:http://172.30.1.200:8000/dashboard/,会发现有以下输出:

3>.更多关于request对象的资料
详情请参考官方文档:https://docs.djangoproject.com/en/1.11/ref/request-response/#httprequest-objects
二.HttpResponse对象
1>.什么是HttpResponse
HttpResponse的功能就是传递一个字符串作为页面的内容到HttpRespnse构造函数。 
2>.HttpResponse的属性和方法
上图我们传递一个字符串作为页面的内容到HttpResponse构造函数,这是一种实例化方式,其实HttpResponse有很多属性,我们从中可以获取到相应的信息,如下所示:
#!/usr/bin/env python
#_*_conding:utf-8_*_
#@author :yinzhengjie
#blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/ from django.http import HttpResponse def index(request):
# res1 = HttpResponse("尹正杰到此一游!")
'''
上面的res1传递一个字符串作为页面的内容到HttpResponse构造函数。这是一种实例化方式,还有一种实例化方式,就是给他传递一个content_type属性。
content_type:
用来指定返回内容的数据类型,默认我们不指定,如上面的res1所示,content_type其实默认就是text/html。其实我们可以指定
的类型不仅仅包括文本的,还可以指定为json的,或者是返回图片类型等等。
'''
res2 = HttpResponse("尹正杰到此一游!", content_type="text/plain",charset="gbk")
print("响应的内容是:",res2.content)
print("响应的字符集是:",res2.charset)
print("响应的状态码是:",res2.status_code)
print("响应的原因短语是:",res2.reason_phrase)
return res2

其实HttpResponse除了如上图所示,可以传递2个参数外,其实它还支持其他参数,具体的我们可以看其对应的方法:
HttpResponse.__init__(content=”, content_type=None, status=200, reason=None, charset=None)
其实上面的一行代码咱们可以查看HttpResponse类,它是继承HttpResponseBase,如下图所示:

我们查看HttpResponseBase类的init方法,如下图所示:

3>.更多关于response的资料
详情请参考:https://docs.djangoproject.com/en/1.11/ref/request-response/#httpresponse-objects.
运维开发笔记整理-Request对象与Response对象的更多相关文章
- 运维开发笔记整理-QueryDict对象
运维开发笔记整理-QueryDict对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 客户端发送数据请求有很多种,相信运维人员已经很清楚了,如果不太清楚的话可以参考我之前的学习笔 ...
- 运维开发笔记整理-JsonResponse对象
运维开发笔记整理-JsonResponse对象 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用HttpResponse发送json格式的数据 1>.HttpRespo ...
- 运维开发笔记整理-django日志配置
运维开发笔记整理-django日志配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Django日志 Django使用python内建的logging模块打印日志,Pytho ...
- 运维开发笔记整理-基于类的视图(CBV)
运维开发笔记整理-基于类的视图(CBV) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.FBV与CBV 1>.什么是FBV FBC(function base views ...
- 运维开发笔记整理-template的使用
运维开发笔记整理-Django的template的使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在上一篇博客中我们学习了HttpResponse 和JsonResponse方 ...
- 运维开发笔记整理-Django模型语法
运维开发笔记整理-Django模型语法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.模型基本概念 1>.什么是模型 模型是你的数据唯一的,权威的信息源.它包含你所存储数 ...
- 运维开发笔记整理-URL配置
运维开发笔记整理-URL配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.URL路由 对于高质量的Web应用来说,使用简洁,优雅的URL的路由是一个非常值得重视的细节.Dja ...
- 运维开发笔记整理-使用Django编写helloworld
运维开发笔记整理-使用Django编写helloworld 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建Django项目 1>.创建Django项目 djang ...
- 运维开发笔记整理-创建django用户
运维开发笔记整理-创建django用户 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.创建普通用户 C:\Users\yinzhengjie\softwares\Pycharm ...
随机推荐
- Swift 4.0 Xib实现Button调整
1.Xib画的界面按钮,代码中进行调整按钮图片在上,文字在下: 代码中修改按钮的位置比较好: payButton.titleEdgeInsets = UIEdgeInsetsMake((payButt ...
- [lodop]css样式after、before添加content内容之前和之后
css样式可以在内容之前和之后加内容.格式是:css类名:before{content:在之前加的内容}css类名:after{content:在之后加的内容}这种写法在LODOP里直接测试是不行的, ...
- 【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA
shell_notifyicon和NOTIFYICONDATA Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息 函数原型 BOOL Shell_NotifIcon( DWORD d ...
- Git常用命令及方法
https://blog.csdn.net/web_csdn_share/article/details/79243308 Git常用命令及方法大全 下面是我整理的常用 Git 命令清单.几个专用名词 ...
- 使用Maven为SpringBoot项目打包
一.maven通过命令行打jar包 进入项目目录,执行如下命令: mvn -Dmaven.test.skip -U clean package 发现报如下错误: [ERROR] Failed to e ...
- eNSP——实现OSPF与ACL综合实验
OSPF与ACL再前几个随笔中提到了,现在我们来做一个实例. 拓扑图: 实验案例要求: 1.企业内网运行OSPF路由协议,区域规划如图所示:2.财务和研发所在的区域不受其他区域链路不稳定性影响:3.R ...
- Django 插件之 Xadmin实现富文本编辑器
此文为前一篇文章的续写: Django 插件之 Xadmin Ueditor 介绍 UEditor 是由百度 web 前端研发部开发所见即所得富文本 web 编辑器,具有轻量,可定制,注重用户体验等特 ...
- ubuntu 18.04 安装搜狗输入法
安装 fcitxsudo apt install fcitx 配置输入法打开fcitx配置界面,点击桌面左下角的菜单,弹出如下桌面: 点击: “Input Method”,进入设置界面 点击 “OK” ...
- LeetCode 896. 单调数列(Monotonic Array)
896. 单调数列 896. Monotonic Array 题目描述 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i<=j,A[i]<=A[j],那么数组 A 是单调 ...
- 哈希--Hash,“散列”/“哈希”
哈希 Hash,翻译“散列”,音译为“哈希”,把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散 ...