系列文章目录
第一章 :Django安装与配置虚拟环境
第二章:django各模块的作用以及参数说明
第三章: Django的路由与视图
第四章:django请求
第五章:django会话
第六章:django中的cookie与session
第七章:视图类
第八章:模型类
第九章:django与mysql连接与迁移
第十章:django模型类(二)
第十一章:django之后台管理
文章目录
系列文章目录
文章目录
前言
一、web应用模式的介绍
1.前后端分离
介绍
工作流程图
2.前后端不分离(流行):
介绍
工作流程图
二.接口Api
1.自己定义一套接口
api文档
后端实现
总结
前言
在web应用领域开发大多数都会使用Restful风格,可能有人要问,问什么要使用Restful,我自己想怎么写,怎么写,接口规范按我的来。那你有没有想过,有一天这个项目是一个团队在做,并且前后端时进行分离的呢,你写的这些东西别人能看懂吗?Restful就是为了解决这一问题所提出的。
通过这篇文章了解一下前后端分离的设计理念以及使用django视图类来实现简单的Restful风格。
一、web应用模式的介绍
1.前后端分离
介绍
介绍
一批人做前端,一批人做后端,共同讨论一套开发文档(接口,数据类型,等等)前后端根据开发文档完成自己该完成的内容
前端:只负责前端页面的编写,通过接口像后端请求数据,把数据渲染到前端(浏览器或app)页面上
后端:实现开发文档中定义的接口,通过接口(请求参数,请求类型)返回后端处理过后的数据,不再负责前端页面的渲染,只负责数据的处理
特点:成本高,适合于大型web项目,分工明确
工作流程图
2.前后端不分离(流行): 介绍
前端后端是一伙人在写,后端处理完数据之后直接使用数据进行前端页面的渲染,在django中使用render()进行模板的渲染返回,方便了数据传递,接口调用的过程,成本降低,适合小型项目使用。
工作流程图二.接口Api
一种特殊的路由,该路由是由前后端一起商议出来一套开发文档,里面包含接口参数,调用方式,由前端调用接口,后端给前端返回数据。
1.自己定义一套接口
api文档
后端实现
class BookInfo_getOne(View):
def get(self, req, id):
try:
book = BookInfo.objects.get(id=id)
except Exception as e:
return JsonResponse({'message': '未查询到此书籍'}, status=404)
book_dict = {
'id': book.id,
'name': book.name,
'chuban_date': book.chuban_date,
'read_count': book.read_count,
'pinglun_count': book.pinglun_count,
'is_del': book.pinglun_count,
}
return JsonResponse(book_dict, status=201)
def put(self, req, id):
try:
book = BookInfo.objects.get(id=id)
except Exception as e:
return JsonResponse({'message': '未查询到此书籍'}, status=404)
book_str = req.body.decode()
book_json = json.loads(book_str)
book.name = book_json['name']
book.chuban_date = book_json['chuban_date']
book.read_count = book_json['read_count']
book.pinglun_count = book_json['pinglun_count']
book.is_del = book_json['is_del']
book.save()
return JsonResponse(book_json, status=202)
def delete(self, req, id):
try:
book = BookInfo.objects.get(id=id)
book.delete()
except ProtectedError as d:
return JsonResponse({'message': '此书籍受关联外键保护'}, status=302)
except Exception as e:
return JsonResponse({'message': '未查询到此书籍'}, status=404)
return JsonResponse({'message': '删除成功'}, status=203)
使用不同的方法调用同一个接口实现不同的功能,后端只管返回处理数据的结果,而不返回渲染后的前端界面
总结
使用不同的方法调用同一个接口实现不同的功能,后端只管返回处理数据的结果,而不返回渲染后的前端界面



