重定向,序列化以及文件下载功能作为自定义框架的辅助功能,都是通过Http协议实现。采用了数据与模板分离的思想,将处理逻辑独立封装成为Response对象之后返回给客户端。
重定向作为一种网页跳转技术,是Web开发中最常用的功能,重定向分为两种 : 301永久重定向以及302临时重定向。301永久重定向就是旧的资源将被永久性的删除,搜索引擎检索的时候也将旧的链接转化为重定向以后的地址;302为临时重定向,搜索引擎检索的时候将一个旧的链接跳转到新的链接,但是旧的资源还存在
重定向技术的实现是通过修改响应头中的Location
字段的值为新的Url即在服务端完成了重定向,之后将响应头以及状态码包装成为Response对象之后返回到客户端。
def redirect(url,status = 302) :
#重定向操作
response = Response('', status= status)
response.headers['Location'] = url
return response
测试用例 :在浏览器中输入http://127.0.0.1:8000
的时候浏览器跳转页面到http://127.0.0.1:8000/music
页面即完成了重定向的操作。
测试代码 :
class TemplateRedirectHandler(BaseHandler) :
def get(self,request,*args,**options):
return redirect(url='/music')
Json序列化,处理一些业务逻辑的时候,需要传递给浏览器的是一些Json数据,比如说前后端分离的场景就是通过Json数据建立起服务端到客户端之间的数据传输模式,所以在处理服务端需要将一些数据经过处理成为Json格式之后反馈客户端。序列化技术的实现也是相对于比较简单的,Python中提供了json.dumps库将需要传递的数据封装成为了Json的数据格式进行传递,并将其封装成为Response对象之后返回给客户端。
def serializater(content) :
#序列化操作
content_type = "text/plain"
if isinstance(content,(list,dict)) :
content = json.dumps(content)
content_type = "application/json"
content_type = '{}; charset=UTF-8'.format(content_type)
return Response(content,content_type = content_type,status=200)
测试用例 :在浏览器中输入http://127.0.0.1:8000/serializater
之后在浏览器页面展示出Json数据
测试代码:
class JsonSerializaterHandler(BaseHandler) :
def get(self,request,*args,**options) :
content = {
'username': 'JassonHandler@163.com',
'password': 'JassonHandler@163.com',
'information': {
'method': 'method'
},
'list': ['JassonHandler@163.com', '1797309152@qq.com']
}
return serializater(content)
测试反馈:
文件下载功能:文件下载的功能是非常简单且与上述两个功能有共同设计思想的功能,都是通过Http协议实现,通过修改响应头中'Content-Disposition'
字段为'attachment; filename={}'.format(filename)
实现了文件下载功能。
测试用例:在浏览器中输入http://127.0.0.1/downloader
即可完成资源的下载。
测试代码 :
__local__ = os.path.dirname(__file__)
class FileDownloaderHandler(BaseHandler) :
def get(self,request,*args,**options):
__files__ = os.path.join(__local__,'files')
return downloader(os.path.join(__files__,'downloader'))
测试反馈: