HttpRequest objects

属性

HttpRequest.scheme

表示请求协议的字符串(通常是http或https)。

HttpRequest.body

原始HTTP请求主体作为字节字符串。这对于以不同于传统HTML表单的方式处理数据非常有用:二进制图像、XML有效负载等。对于处理传统表单数据,使用HttpRequest.POST。

HttpRequest.path

表示请求页的完整路径的字符串,不包括HttpRequest.scheme或域名。

示例:“/music/bands/ the_beatles /”

HttpRequest.path_info

在一些Web服务器配置中,主机名之后的URL部分被分成脚本前缀部分和路径信息部分。无论使用什么Web服务器,path_info属性总是包含路径的path info部分。使用这个替代路径可以使您的代码更容易在测试服务器和部署服务器之间移动。

例如,如果应用程序的WSGIScriptAlias设置为“/minfo”,那么path可能是“/minfo/music/bands/”,path_info可能是“/music/bands/the_beatles/”

HttpRequest.method

表示请求中使用的HTTP方法的字符串。这保证是大写的。

if request.method == 'GET':
do_something()
elif request.method == 'POST':
do_something_else()

HttpRequest.encoding

HttpRequest.encoding

表示请求的MIME类型的字符串,从CONTENT_TYPE报头解析

HttpRequest.content_params

CONTENT_TYPE报头中包含的键/值参数字典

HttpRequest.GET

包含所有HTTP GET参数的类字典对象。

HttpRequest.POST

包含所有HTTP POST参数的类字典对象。

HttpRequest.COOKIES

包含所有cookie的字典。键和值是字符串。

HttpRequest.FILES

包含所有上传文件的类字典对象。文件中的每个键是来自<input type="file" name=" >。文件中的每个值都是一个上传文件。

如果请求方法是POST,并且提交到请求的具有enctype="multipart/form-data",文件将只包含数据。否则,文件将是一个类似于字典的空白对象。

HttpRequest.META

包含所有可用HTTP头的字典。可用的标头取决于客户端和服务器,但这里有一些例子

HttpRequest.current_app

url模板标记将使用它的值作为current_app参数来反转()

HttpRequest.urlconf

这将用作当前请求的根URLconf,覆盖ROOT_URLCONF设置。

HttpRequest.session

来自SessionMiddleware:一个可读的、可写的、类词典的对象,它代表当前会话。

HttpRequest.site

来自CurrentSiteMiddleware:表示当前站点的get_current_site()返回的站点或RequestSite实例。

HttpRequest.user

来自AuthenticationMiddleware: AUTH_USER_MODEL的实例,该实例表示当前登录的用户。如果用户当前没有登录,用户将被设置为AnonymousUser实例。你可以用is_authenticated区分它们,比如:

if request.user.is_authenticated:
... # Do something for logged-in users.
else:
... # Do something for anonymous users.

方法

HttpRequest.get_host()

返回host

HttpRequest.get_port()

返回port

HttpRequest.get_full_path()

返回path

HttpRequest.get_full_path_info()

返回path_info

HttpRequest.build_absolute_uri(location)

返回location绝对路径,若不提供location参数,默认使用HttpRequest.get_full_path()

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

返回cookie的值,defalut为默认值,salt防止暴力破解密钥,max_age为生命周期

>>> request.get_signed_cookie('name')
'Tony'
>>> request.get_signed_cookie('name', salt='name-salt')
'Tony' # assuming cookie was set using the same salt
>>> request.get_signed_cookie('nonexistent-cookie')
...
KeyError: 'nonexistent-cookie'
>>> request.get_signed_cookie('nonexistent-cookie', False)
False
>>> request.get_signed_cookie('cookie-that-was-tampered-with')
...
BadSignature: ...
>>> request.get_signed_cookie('name', max_age=60)
...
SignatureExpired: Signature age 1677.3839159 > 60 seconds
>>> request.get_signed_cookie('name', False, max_age=60)
False

HttpRequest.is_secure()

如果是安全的(https请求)返回True

HttpRequest.is_ajax()

如果是ajax请求 返回True

HttpRequest.read

HttpRequest.readline()

HttpRequest.readlines()

HttpRequest.iter()

提供了可迭代方法

HttpRresponse objects

用法

典型的用法是将页面的内容作为字符串传递

>>> from django.http import HttpResponse
>>> response = HttpResponse("Here's the text of the Web page.")
>>> response = HttpResponse("Text only, please.", content_type="text/plain")

如果您想增量地添加内容,您可以使用response作为类文件对象

>>> response = HttpResponse()
>>> response.write("<p>Here's the text of the Web page.</p>")
>>> response.write("<p>Here's another paragraph.</p>")

设置头信息

类似与字典的用法

>>> response = HttpResponse()
>>> response['Age'] = 120
>>> del response['Age']

告诉浏览器将响应视为文件附件

要告诉浏览器将响应视为文件附件,请使用content_type参数并设置内容配置头。

# 返回Microsoft Excel电子表格的方式:
>>> response = HttpResponse(my_data, content_type='application/vnd.ms-excel')
>>> response['Content-Disposition'] = 'attachment; filename="foo.xls"'

属性

HttpResponse.content

HttpResponse.charset

HttpResponse.status_code

HttpResponse.reason_phrase

HttpResponse.streaming

HttpResponse.closed

方法

HttpResponse.__init__(content='', content_type=None, status=200, reason=None, charset=None)[source]

HttpResponse.__delitem__(header)

HttpResponse.__getitem__(header)

HttpResponse.has_header(header)

HttpResponse.setdefault(header, value)

HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False, samesite=None)

HttpResponse.set_signed_cookie(key, value, salt='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False, samesite=None)

HttpResponse.delete_cookie(key, path='/', domain=None)

HttpResponse.flush()

HttpResponse.tell()[source]

HttpResponse.getvalue()[source]

HttpResponse.readable()

HttpResponse.seekable()

HttpResponse.writable()[source]

HttpResponse.writelines(lines)[source]

HttpResponse subclasses

HttpResponseRedirect

重定向

HttpResponsePermanentRedirect

永久重定向,返回状态码301而不是302

HttpResponseNotModified

构造函数不接受任何参数,并且不应该向此响应添加任何内容。使用此设置可以指定自用户上次请求(状态码304)以来没有修改过页面。

HttpResponseBadRequest

像HttpResponse一样,使用400状态码。

HttpResponseNotFound

像HttpResponse一样,使用404状态码。

HttpResponseForbidden

像HttpResponse一样,使用403状态码。

HttpResponseNotAllowed

像HttpResponse一样,使用405状态码。

HttpResponseGone

像HttpResponse一样,使用410状态码。

HttpResponseServerError

像HttpResponse一样,使用500状态码。

JsonResponse

class JsonResponse(data, encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, **kwargs)

HttpResponse子类,帮助创建json编码的响应。它继承了它的超类的大部分行为,但有几个不同之处:

它的默认内容类型头被设置为application/json。

data:应该是一个dict实例。如果将安全参数设置为False(参见下面),那么它可以是任何JSON-serializable对象。

encoder:默认为django.core.serializers.json.DjangoJSONEncoder,将用于序列化数据。有关这个序列化器的详细信息,请参阅JSON序列化。

safe:默认为True。如果设置为False,则可以为序列化传递任何对象(否则只允许使用dict实例)。如果safe为真,并且将一个非dict对象作为第一个参数传递,则会引发类型错误。

json_dumps_params:是一个关键字参数字典,用于传递给用于生成响应的json.dumps()调用。

用法

>>> from django.http import JsonResponse
>>> response = JsonResponse({'foo': 'bar'})
>>> response.content
b'{"foo": "bar"}'

序列化一个非字典对象

>>> response = JsonResponse([1, 2, 3], safe=False)

使用自定义编译器

>>> response = JsonResponse(data, encoder=MyJSONEncoder)

StreamingHttpResponse

StreamingHttpResponse类用于将Django的响应流传输到浏览器。如果生成响应的时间太长或占用了太多内存,您可能希望这样做。例如,它对于生成大型CSV文件非常有用。

性能考虑
Django是为短期请求而设计的。流响应将在响应的整个持续时间内连接工作进程。这可能导致较差的性能。
一般来说,您应该在请求-响应周期之外执行昂贵的任务,而不是求助于流响应。

属性

StreamingHttpResponse.streaming_content

表示内容的字符串的迭代器。

StreamingHttpResponse.status_code

Http请求的状态码

StreamingHttpResponse.reason_phrase

Http的reason phrase。

StreamingHttpResponse.streaming

总是True

FileResponse objects

class FileResponse(open_file, as_attachment=False, filename='', **kwargs)

>>> from django.http import FileResponse
>>> response = FileResponse(open('myfile.png', 'rb'))

django response reuqest的更多相关文章

  1. 从HTML form submit 到 django response是怎么完成的

    HTML form 里的数据是怎么被包成http request 的?如何在浏览器里查看到这些数据? 浏览器做的html数据解析 form里的数据变成name=value对在POST Body中 re ...

  2. django django中的HTML控件及参数传递方法 以及 HTML form 里的数据是怎么被包成http request 的?如何在浏览器里查看到这些数据?

    https://www.jb51.net/article/136738.htm django中的HTML控件及参数传递方法 下面小编就为大家分享一篇django中的HTML控件及参数传递方法,具有很好 ...

  3. request response cookie session

    request 1. url传递参数 1)参数没有命名, 如: users/views def weather(request, city, year): print(city) print(year ...

  4. Django和Flask相对总结目录

    Django中文文档官网:https://yiyibooks.cn/xx/Django_1.11.6/index.html Flask中文文档官网:https://dormousehole.readt ...

  5. Restful framework【第六篇】认证组件

    基本用法 -认证功能 1 写一个类,继承BaseAuthentication 2 def authenticate(self,request) ,记住传request对象 -如果验证通过,返回None ...

  6. Diango 框架起步

    一.命令行搭建Django项目 安装django # 在指定解释器环境下安装django 1.11.9# 在真实python3环境下: pip3 install django==1.11.9# 在虚拟 ...

  7. Django 源码小剖: 响应数据 response 的返回

    响应数据的返回 在 WSGIHandler.__call__(self, environ, start_response) 方法调用了 WSGIHandler.get_response() 方法, 由 ...

  8. Django Push HTTP Response to users

    Django Push HTTP Response to users I currently have a very simple web application written in Django, ...

  9. django HTTP请求(Request)和回应(Response)对象

    Django使用request和response对象在系统间传递状态.—(阿伦)当一个页面被请示时,Django创建一个包含请求元数据的 HttpRequest 对象. 然后Django调入合适的视图 ...

随机推荐

  1. F5负载均衡架构图

    原文:https://blog.csdn.net/qq_35611533/article/details/51917279?locationNum=1&fps=1

  2. win10 IIS 10.0 无法安装 URL Rewrite Module 重写模块

      打开注册表 win+R 输入 regidit在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp位置 修改注册表 把MajorVersion的值改为9 安装 ...

  3. Python基础学习九 单元测试

    import unittest import HTMLTestRunner #产生测试报告 from BeautifulReport import BeautifulReport def calc(x ...

  4. 解决SDK未授权问题

    问题描述 在启动项目的时候报错了,如下: What went wrong: A problem occurred configuring project ':app'. > You have n ...

  5. XP下安装IIS的图文教程(无光盘)

    IIS5.1安装文件包下载地址:http://yunpan.cn/QzBZGugw84wEr 安装记录: 1. 将IIS5.1安装文件包解压 2. 开始-->控制面板-->添加/删除程序- ...

  6. 新手C#ListView使用记录2018.08.03

    在使用C#的ListView时,感觉有一些部分需要自己注意. ListView1.Clear()这条指令在使用时,用于Click后在ListView中显示数据,应该放在输入数据的前面. 在ListVi ...

  7. MenuItem属性

    [MenuItem属性] The MenuItem attribute allows you to add menu items to the main menu. The MenuItem attr ...

  8. 【HDU3853】LOOPS

    题意 有一个R*C的方格.一个人想从(1,1)走到(r,c).在每个格子都有三种选择,向下,向右,或者原地不动.每个格子里的每个选择都有一定的概率.而每次移动都需要消耗2点的能量,问期望消耗的能量是多 ...

  9. Ubuntu Server 12.04 LTS搭建SVN服务及修改端口

    采用了apache结合svn的方式. 首先安装apache.subversion.svn-apache sudo apt-get install apache2 sudo apt-get instal ...

  10. 微软人工智能公开课 https://mva.microsoft.com/colleges/microsoftai#!jobf=Developer

    https://mva.microsoft.com/colleges/microsoftai#!jobf=Developer