Django HttpResponse对象,HttpResponse对象是对用户访问的响应,与HttpRequest对象不同的是,HttpResponse对象需要开发人员在视图中创建。
HttpResponse对象属于django.http
模块。可以直接向HttpResponse对象中传递文本、迭代器。在传递文本的同时可以指定浏览器对文本的处理方式,例如:
>>> 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 = HttpResponse()
>>> response.write("<p>Here's the text of the Web page.</p>")
>>> response.write("<p>Here's another paragraph.</p>")
另外可以直接操作HttpResponse的Header信息,例如:
>>> response = HttpResponse()
>>> response['Age'] = 120
>>> del response['Age']
注意,不像字典对象,如果删除一个不存在的Key,del方法并不会抛出异常。
属性
1. HttpResponse.content
HTTP响应的内容。
2. HttpResponse.charset
HTTP响应所使用的编码格式。
3. HttpResponse.status_code
HTTP响应的状态码。除非显式地设置了HttpResponse.reason_phrase
,否则对HttpResponse.status_code
的修改也会改变HttpResponse.reason_phrase
。
4. HttpResponse.reason_phrase
W3C定义的Reason-Phrases,每一个HTTP状态码都对应一个Reason-Phrases字符串,如表所示。
关于更详细的HTTP Status Code与Reason-Phrases信息请参阅[https://urivalet.com/ reason-phrases](https://urivalet.com/ reason-phrases)。
5. HttpResponse.streaming
该属性值永远为False。由于HttpResponse.streaming
属性的存在,Django中间件才可以使用不同的方式来处理流响应。
6. HttpResponse.closed
如果响应已经关闭则返回True。
方法
1. HttpResponse.__init__(content=”, content_type=None, status=200, reason=None, charset=None)
使用指定的文档内容和文档类型构造HttpResponse对象。
参数说明:
content:字符串或者迭代器。
content_type:MIME类型以及字符集,content_type用于创建Content-Type头。
status:HTTP状态码。
reason:HTTP Reason-Phrases。
charset:字符集。
2. HttpResponse.__setitem__(header, value)
设置HTTP头,header和value都是字符串。
3. HttpResponse.__delitem__(header)
删除指定HTTP头,如果删除失败不会抛出异常。区分字母大小写。
4. HttpResponse.__getitem__(header)
返回指定HTTP头的值。区分字母大小写。
5. HttpResponse.has_header(header)
判断HTTP头是否存在,header区分字母大小写。
6. HttpResponse.setdefault(header, value)
如果指定的HTTP头还没有设置则进行设置。
7. HttpResponse.set_cookie(key, value=”, max_age=None, expires=None, path=’/’, domain=None, secure=None, httponly=False)
设置一个cookie。
参数说明:
max_age:cookie的最长生命周期,单位为秒(s)。默认值为None,此时cookie的生命周期与浏览器session一样。
Expires:cookie的过期时间,格式为"Wdy, DD-Mon-YY HH:MM:SS GMT"
或者UTC格式的datetime.datetime
对象。
Domain:cookie的域。
httponly=True:阻止客户端JavaScript访问cookie。
8. HttpResponse.set_signed_cookie(key, value, salt=”, max_age=None, expires=None, path=’/’, domain=None, secure=None, httponly=True)
与set_cookie()方法相似,不过set_signed_cookie()方法在设置cookie之前会进行加密。
9. HttpResponse.delete_cookie(key, path=’/’, domain=None)
删除cookie。删除失败不会抛出异常。
除了以上方法外,HttpResponse对象还可以像文件或者流一样进行读写操作,具体方法如下:
- HttpResponse.write(content)
- HttpResponse. fl ush()
- HttpResponse.tell()
- HttpResponse.getvalue()
- HttpResponse.readable()
- HttpResponse.seekable()
- HttpResponse.writable()
- HttpResponse.writelines(lines)
HttpResponse子类
为了处理不同类型的HTTP响应,Django还提供了一些HttpResponse子类。
1. class HttpResponseRedirect
将请求跳转到其他地址。对应的HTTP状态码是302。
2. class HttpResponsePermanentRedirect
与HttpResponseRedirect相似,进行页面跳转,不过HTTP状态码是301。
3. class HttpResponseNotModified
表示从用户最后一次访问到现在,页面没有发生改变,HTTP状态码是304。
4. class HttpResponseBadRequest
HTTP状态码是400。
5. class HttpResponseNotFound
HTTP状态码是404。
6. class HttpResponseForbidden
HTTP状态码是403。
7. class HttpResponseNotAllowed
HTTP状态码是405。构造函数的第一个参数是必需的,参数值是一组任意允许的HTTP method,例如: ['GET', 'POST']
。
8. class HttpResponseGone
HTTP状态码是401。
9. class HttpResponseServerError
HTTP状态码是500。
酷客教程相关文章:
评论前必须登录!
注册