Django框架HttpResponse和HttpRequest对象学习

目录
  • HttpRequest对象
    • 1.我们可以打印这个request对象
    • 2.我们可以打印观察一下它具备哪些方法
      • 常用属性和方法功能讲解:
  • HttpResponse对象
    • HttpResponse对象的属性和方法
      • 属性
      • 方法
    • HttpResponse的子类
      • 返回数据的响应函数

HttpRequest对象

在前面你也跟着本博主编写了那么多的视图函数,但是每个视图函数它都会接收一个名为request的参数。
是不是很好奇:视图函数接收到的request到底是个什么对象!!!

1.我们可以打印这个request对象

看一下:

<WSGIRequest: GET '/music/test3/'>

我们知道WSGIRequest是一个HTTP请求对象,里面包括了提交的方式和URL路径。

综上可知:

服务器接收到http协议的请求后,会根据报文创建HttpRequest对象

它是一个请求对象:用户信息(提交方式等);浏览器信息(请求头信息等)。
视图函数的第一个参数是HttpRequest对象。
在django.http模块中定义了HttpRequest对象的API

2.我们可以打印观察一下它具备哪些方法

dir(request)

常用属性和方法功能讲解:

属性:

  • path:一个字符串,表示请求的页面的完整路径,不包含域名。
  • method:一个字符串,表示请求使用的HTPP方法,常用的值包括:‘GET',‘POST'。
  • encoding:一个字符串,表示提交的数据的编码方式。如果为None则表示使用浏览器的默认设置(一般为utf-8)。这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,加下来对属性的任何访问都将使用新的encoding值。
  • GET:一个类似于字典的对象,包含get请求方式的所有参数。
  • POST:一个类似于字典的对象,包含post请求方式的所有参数。
  • FILES:一个类似于字典的对象,包含所有的上传文件。
  • COOKIES:一个标准的Python字典,包含所有的cookie,键和值都为字符串。
  • session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django启用会话的支持时才可用。

方法:

is_ajax():如果请求是通过XMDHttpRequest发起的,则返回True。

HttpResponse对象

很多时候我们在访问网页的时候,网页的开发者为了美观,大多数都是使用JS效果来显示诸如弹窗之类的效果(提醒登录呀/提醒注册呀/该用户名已经注册呀之类的)
那么,使用Django如何实现JS效果呢?

Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响应给浏览器。而这个响应,我们必须返回HttpResponseBase或者他的子类的对象。而HttpResponse则是HttpResponseBase用得最多的子类。那么接下来就来介绍一下HttpResponse及其子类。

HttpResponse对象的属性和方法

属性

content:表示返回的内容,字符串类型;

charset:表示response采用的编码字符集,字符串类型;

status_code:响应的HTTP响应状态码;

content-type:返回的数据的MIME类型,默认为text/html。浏览器会根据这个属性,来显示数据。如果是text/html,那么就会解析这个字符串,如果text/plain,那么就会显示一个纯文本。常用的Content-Type如下:

  • text/html(默认的,html文件)
  • text/plain(纯文本)
  • text/css(css文件)
  • text/javascript(js文件)
  • multipart/form-data(文件提交)
  • application/json(json传输)
  • application/xml(xml文件)

示例:

response = HttpResponse('<h2>微信公众号【孤寒者】</h1>',content_type='text/plain;charset=utf-8')
# 注意:一般在使用‘text/plain'时,都会添加‘charset=utf-8',否则是会乱码的。
return response

方法

init:使用页内容实例化HttpResponse对象;

write(content):以文件的方式写;

flush():以文件的方式输出缓存区;

set_cookie(key, value='',max_age=None, expires=None):设置Cookie。

参数讲解:
  ①key,value都是字符串类型;
  ②max_age是一个整数,表示在指定秒数后过期;
  ③expires是一个datetime或timedelta对象,会话将在这个指定的日期/时间过期,注意datetime和timedelta值只有在使用PickleSerializer时才可序列化;
  ④max_age和expires二选一,如果不指定过期时间,则关闭浏览器就失效。

delete_cookie(key):删除指定的key的cookie,如果Key不存在则什么也不发生。

HttpResponse的子类

返回数据的响应函数

  • HttpResponse() 返回简单的字符串对象
  • render() 渲染模板
  • redirect() 重定向
  • JsonResponse() 返回json数据。结合前端AJax等技术可以实现后端向前端传数据,前端接收后实现诸如注册登录等的JS效果功能!(这就解决了前面所说的问题!)
from django.http import JsonResponse
def resp(request):
	return JsonResponse({'ss':'登录成功!'})
	# 帮助用户创建JSON编码的响应;
	# 参数data是字典对象;
	# JsonResponse的默认Content-Type为application/json。

以上就是Django框架HttpResponse和HttpRequest对象学习的详细内容,更多关于Django框架HttpResponse和HttpRequest对象的资料请关注我们其它相关文章!

(0)

相关推荐

  • Django的HttpRequest和HttpResponse对象详解

    本文研究的主要是Django的HttpRequest和HttpResponse对象的相关内容,具体如下. 请求一张页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把这个HttpRequest 对象作为第一个参数传给view方法.任何view方法都应该返回一个HttpResponse对象. 我们在本书中大量使用这两个对象:本附录详细解释HttpRequest和HttpResponse对象. HttpRequest Htt

  • Django框架HttpResponse对象用法实例分析

    本文实例讲述了Django框架HttpResponse对象用法.分享给大家供大家参考,具体如下: 1.HttpResponse 可通过HttpResponse构造响应对象: HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码) 响应头可以直接将HttpResponse对象当做字典进行响应头键值对的设置: response = HttpResponse() response['itcast'] = 'Python' # 自定义响应头

  • Django 响应数据response的返回源码详解

    响应数据的返回 在 WSGIHandler.__call__(self, environ, start_response) 方法调用了 WSGIHandler.get_response() 方法, 由此得到响应数据对象 response. 如今所要做的, 便是将其返回给客户端. 在 Django 源码小剖: 初探 WSGI中, 简要的概括了请求到来时 django 自带服务器的执行关系, 摘抄如下: make_server() 中 WSGIServer 类已经作为服务器类, 负责接收请求, 调用

  • Django框架HttpRequest对象用法实例分析

    本文实例讲述了Django框架HttpRequest对象用法.分享给大家供大家参考,具体如下: 1.URL路径参数 (1)位置参数:使用正则分组,与视图中的参数一一对应,不可换位置 例: url(r'^(\d+)/(\d+)/$', views.index) def index(request, 参数1, 参数2): ... (2)关键字参数:参数位置可以变,与关键字保持一致即可 例: url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views

  • 详解Django中Request对象的相关用法

    从Request对象中获取数据 我们在第三章讲述View的函数时已经介绍过HttpRequest对象了,但当时并没有讲太多. 让我们回忆下:每个view函数的第一个参数是一个HttpRequest对象,就像下面这个hello()函数: from django.http import HttpResponse def hello(request): return HttpResponse("Hello world") HttpRequest对象,比如上面代码里的request变量,会有一

  • Django框架HttpResponse和HttpRequest对象学习

    目录 HttpRequest对象 1.我们可以打印这个request对象 2.我们可以打印观察一下它具备哪些方法 常用属性和方法功能讲解: HttpResponse对象 HttpResponse对象的属性和方法 属性 方法 HttpResponse的子类 返回数据的响应函数 HttpRequest对象 在前面你也跟着本博主编写了那么多的视图函数,但是每个视图函数它都会接收一个名为request的参数. 是不是很好奇:视图函数接收到的request到底是个什么对象!!! 1.我们可以打印这个req

  • 在Python的Django框架中获取单个对象数据的简单方法

    相对列表来说,有些时候我们更需要获取单个的对象, `` get()`` 方法就是在此时使用的: >>> Publisher.objects.get(name="Apress") <Publisher: Apress> 这样,就返回了单个对象,而不是列表(更准确的说,QuerySet). 所以,如果结果是多个对象,会导致抛出异常: >>> Publisher.objects.get(country="U.S.A.") T

  • django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】

    本文实例讲述了django框架使用views.py函数对表进行增删改查内容操作.分享给大家供大家参考,具体如下: models之对于表的创建有以下几种: 一对一:ForeignKey("Author",unique=True),  OneToOneField("Author") 一对多:ForeignKey(to="Publish",to_field="id",on_delete.CASCADE) 多对多:ManyToMany

  • Django框架model模型对象验证实现方法分析

    本文实例讲述了Django框架model模型对象验证实现方法.分享给大家供大家参考,具体如下: 模型对象的验证 验证一个模型涉及三个步骤: 验证模型的字段 -- Model.clean_fields() 验证模型的完整性 -- Model.clean() 验证模型的唯一性 -- Model.validate_unique() 当调用模型的full_clean() 方法时,这三个方法都将执行.当使用ModelForm时,is_valid() 将为表单中的所有字段执行这些验证.如果你计划自己处理验证

  • Django框架表单操作实例分析

    本文实例讲述了Django框架表单操作.分享给大家供大家参考,具体如下: HTML表单是网站交互性的经典方式. 开始学习如何用Django对用户提交的表单数据进行处理. HTTP 请求 HTTP协议以"请求-回复"的方式工作.客户发送请求时,可以在请求中附加数据.服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务. GET 方法 在之前的项目中创建一个 search.py 文件,用于接收用户的请求: /djangoPro/djangoPro/search.py

  • Django框架中视图的用法

    视图层 一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应. 响应可以是一个 HTML 页面.一个 404 错误页面.重定向页面.XML 文档.或者一张图片... 无论视图本身包含什么逻辑,都要返回响应.代码写在哪里都可以,只要在 Python 目录下面,一般放在项目的 views.py 文件中. 每个视图函数都负责返回一个 HttpResponse 对象,对象中包含生成的响应. 视图层中有两个重要的对象:请求对象(request)与响应对象(H

  • Django框架中表单的用法

    HTML表单是网站交互性的经典方式. 本章将介绍如何用Django对用户提交的表单数据进行处理. 一.HTTP 请求 HTTP协议以"请求-回复"的方式工作.客户发送请求时,可以在请求中附加数据.服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务. 1.GET 方法 我们在之前的项目中创建一个 search.py 文件,用于接收用户的请求: /HelloWorld/HelloWorld/search.py 文件代码: # -*- coding: utf-8 -*

  • 分析Python的Django框架的运行方式及处理流程

    之前在网上看过一些介绍Django处理请求的流程和Django源码结构的文章,觉得了解一下这些内容对开发Django项目还是很有帮助的.所以,我按照自己的逻辑总结了一下Django项目的运行方式和对Request的基本处理流程. 一.Django的运行方式 运行Django项目的方法很多,这里主要介绍一下常用的方法.一种是在开发和调试中经常用到runserver方法,使用Django自己的web server:另外一种就是使用fastcgi,uWSGIt等协议运行Django项目,这里以uWSG

随机推荐