django框架前后端分离CBV模式后端API开发
2019-07-13 23:24
288 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43517336/article/details/95798365
请求处理方式 CBV 使用CBV的注意事项 接口测试软件推荐 postman 总结
django框架前后端分离CBV模式后端API开发
请求处理方式 FBV
刚开始学习django,从前后端不分离入手,FBV(function base views) 就是在视图里使用函数处理请求。
使用FBV的index页面实现示例代码
from django.urls import path from . import views urlpatterns = [ path('', views.index, name="index"), ]
from django.http import HttpResponse def index(request): if request.method == "GET": return HttpResponse("Hello world! This is get.") if request.method == "POST": return HttpResponse("Hello world! This is post.") if request.method == "PUT": return HttpResponse("Hello world! This is put.") if request.method == "DELETE": return HttpResponse("Hello world! This is delete.")
由于python函数只能用if语句来判断请求方式,当有GET、POST、PUT、DELETE…等等多种请求方式时,python的优势就被埋没了,且不方便维护。
请求处理方式 CBV
CBV(class base views) 就是在视图里使用类处理请求。
Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承、封装、多态)。所以Django在后来加入了Class-Based-View。可以让我们用类写View。这样做的优点主要下面两种:
1.提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
2.可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性
使用FBV的index页面实现示例代码
from django.urls import path from django.views import View from . import views app_name = 'yyyy' urlpatterns = [ path('index/', views.IndexView.as_view()) ]
from django.http import HttpResponse from django.views import View import json class IndexView(View): def get(self, request, *args, **kwargs): return HttpResponse("Hello world! This is get.") #当接收到post请求时返回json数据 def post(self, request, *args, **kwargs): user_json = { 'code' : 1000, #code是与前端约定的标识,确定数据的处理方法 'username' : 'itang85', 'password' : '123456', } return HttpResponse(json.dumps(user_json)) def put(self, request, *args, **kwargs): return HttpResponse("Hello world! This is put.") def delete(self, request, *args, **kwargs): return HttpResponse("Hello world! This is delete.")
当浏览器向后端发送请求时,django自动会根据request.method来运行对应的函数,代码运行流程的理解可以仔细阅读(from django.views import View)View类的dispatch方法。如有不清楚可以在下方评论区评论提问哟!
此时的API(即前端ajax传输数据的url)为
API: http://127.0.0.1:8000/index/
使用CBV的注意事项
注意:
- cbv定义类的时候必须要继承django.views的View
- 在写url的时候必须要加as_view()
- 类里面使用form表单提交的话只有GET和POST方法
- 类里面使用ajax发送数据的话支持定义以下很多方法,常用请求方式的restful 规范:
‘GET’ 获取数据,
‘POST’ 创建新数据,
‘PUT’ 更新
‘PATCH’ 局部更新
‘DELETE’ 删除 - 在发送post请求时记得要把 setting.py 里面的csrf中间件注释掉,否则post是不能成功的。另外补充一点csrf中间件工作在views视图层!!!
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', #'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
接口测试软件推荐 postman
postman是十分好用的软件,可发送各种方式的请求给后端api,做前后端分离开发时必不可少的测试软件。百度搜索官网即可下载,安装可用!
总结
无论是FBV还是CBV都可以实现请求处理的所有功能,只是CBV更好的利用了python面向对象的能力。实际开发时也可以根据个人的喜好来做选择,小唐推荐大家使用CBV,逻辑更加清晰,后期也更好维护哟。
相关文章推荐
- SOSOAPI前后端分离开发模式下的接口测试
- Django rest+Vue前后端分离开发(一)项目初始化
- 通过Express4构建Restful API服务器 - 结合AngularJS前后端分离开发
- Python前后端分离开发Vue+Django REST framework实战
- 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之十 || AOP面向切面编程浅解析:简单日志记录 + 服务切面缓存
- 前后端分离的交互式开发模式
- Python Django 前后端分离 API
- 前后端分离模式:springboot+beetlsql+swagger高效开发利器
- 基于API的前后端分离开发
- .NET MVC结构框架下的微信扫码支付模式二 API接口开发测试
- [转]前后端分离开发模式下后端质量的保证 —— 单元测试
- 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之一 || 前言
- ASP.NET Core模块化前后端分离快速开发框架介绍之3、数据访问模块介绍
- 前后端分离开发部署模式
- 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之二 || 后端项目搭建
- Python前后端分离开发Vue+Django REST framework RESTFul Api跨域电商实战视频教程
- 前后端分离开发部署模式
- laravel框架下 前后端分离开发时 通过AJax请求单独获取加密后的csrf_token
- 从壹开始前后端分离【 .NET Core2.0 Api + Vue 2.0 + AOP + 分布式】框架之三 || Swagger的使用 3.1