Django 请求和响应
客户端-服务器架构包括两个主要组件:请求和响应。Django框架使用客户端-服务器架构来实现Web应用程序。
当客户端请求资源时,将创建一个HttpRequest对象,并调用相应的视图函数来返回HttpResponse对象。
为了处理请求和响应,Django提供了HttpRequest和HttpResponse类。每个类都有自己的属性和方法。
让我们来看一下HttpRequest类。
Django HttpRequest
该类在 django.http 模块中定义,并且用于处理客户端请求。以下是该类的属性。
Django HttpRequest属性
属性 | 描述 |
---|---|
HttpRequest.scheme | 一个表示请求方案的字符串(通常是HTTP或HTTPs)。 |
HttpRequest.body | 以字节字符串的形式返回原始的HTTP请求主体。 |
HttpRequest.path | 返回请求页面的完整路径,不包括方案或域名。 |
HttpRequest.path_info | 显示路径信息部分的路径。 |
HttpRequest.method | 显示请求中使用的HTTP方法。 |
HttpRequest.encoding | 显示用于解码表单提交数据的当前编码。 |
HttpRequest.content_type | 显示请求的MIME类型,从CONTENT_TYPE标头中解析。 |
HttpRequest.content_params | 返回包含在CONTENT_TYPE标头中的键/值参数的字典。 |
HttpRequest.GET | 返回一个类似字典的对象,包含所有给定的HTTP GET参数。 |
HttpRequest.POST | 一个类似字典的对象,包含所有给定的HTTP POST参数。 |
HttpRequest.COOKIES | 返回所有可用的cookie。 |
HttpRequest.FILES | 包含所有已上传的文件。 |
HttpRequest.META | 显示所有可用的HTTP头。 |
HttpRequest.resolver_match | 包含一个表示解析的URL的ResolverMatch的实例。 |
以下表格包含了HttpRequest类的方法。
Django HttpRequest 方法
属性 | 描述 |
---|---|
HttpRequest.get_host() | 返回请求的原始主机。 |
HttpRequest.get_port() | 返回请求的来源端口。 |
HttpRequest.get_full_path() | 返回路径,如果适用则附加查询字符串。 |
HttpRequest.build_absolute_uri (location) | 返回位置的绝对URI形式。 |
HttpRequest.get_signed_cookie (key, default=RAISE_ERROR, salt=”, max_age=None) | 返回签名cookie的值,如果签名不再有效,则引发django.core.signing.BadSignature异常。 |
HttpRequest.is_secure() | 如果请求是安全的(即使用HTTPS)则返回True。 |
HttpRequest.is_ajax() | 如果请求是通过XMLHttpRequest发出的,则返回True。 |
Django HttpRequest 示例
// views.py
def methodinfo(request):
return HttpResponse("Http request is: "+request.method)
// urls.py
path('info',views.methodinfo)
启动服务器并访问浏览器。浏览器显示请求方法名称。
输出:
Django HttpResponse响应
该类是django.http模块的一部分。它负责生成与请求对应的响应并返回给客户端。
该类包含以下各种属性和方法。
Django HttpResponse属性
属性 | 描述 |
---|---|
HttpResponse.content | 一个表示内容的字节字符串,如果需要,会从字符串编码。 |
HttpResponse.charset | 它是一个表示响应将被编码的字符集的字符串。 |
HttpResponse.status_code | 这是一个 HTTP状态码 ,用于响应。 |
HttpResponse.reason_phrase | 响应的HTTP原因短语。 |
HttpResponse.streaming | 默认为false。 |
HttpResponse.closed | 如果响应已关闭,则为True。 |
Django HttpResponse方法
方法 | 描述 |
---|---|
HttpResponse.__init__ (content='', content_type=None, status=200, reason=None, charset=None) |
用给定的页面内容和内容类型实例化一个HttpResponse对象。 |
HttpResponse.__setitem__ (header, value) |
将给定的头名称设置为给定的值。 |
HttpResponse.__delitem__ (header) |
删除具有给定名称的头。 |
HttpResponse.__getitem__ (header) |
返回给定头名称的值。 |
HttpResponse.has_header (header) | 根据不区分大小写的检查提供的名称是否存在头,返回True或False。 |
HttpResponse.setdefault (header, value) | 设置默认头。 |
HttpResponse.write (content) | 创建文件对象的响应对象。 |
HttpResponse.flush() | 刷新响应对象。 |
HttpResponse.tell() | 使HttpResponse实例像文件对象一样。 |
HttpResponse.getvalue() | 获取HttpResponse.content的值。 |
HttpResponse.readable() | 创建类HttpResponse的流对象。 |
HttpResponse.seekable() | 使响应对象可以进行定位。 |
我们可以在Django应用程序中使用这些方法和属性来处理响应。