Django框架HttpResponse和HttpRequest对象学习
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对象的资料请关注其它相关文章!