前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django-rest_framework api框架学习day1

django-rest_framework api框架学习day1

作者头像
kirin
发布2020-05-09 15:54:28
1.3K0
发布2020-05-09 15:54:28
举报
文章被收录于专栏:Kirin博客

今天开始了django-rest-framework的学习 *** 其实api写起来的话要比前后端一起写要简单很多,因为你不需要关心前端怎么写,主要心思放在后端上面即可,前端的话随便找个模板,然后用vue语法嵌套上去就好了,一样可以做到很好看,实现了前后端的分离,非常的nice,开始学习之路了!加油奥利给 *** 首先需要安装rest-framework *** pip install framework *** 接着在setting-installed-apps中注册 *** INSTALLED_APPS = [ ‘django.contrib.admin’, ‘django.contrib.auth’, ‘django.contrib.contenttypes’, ‘django.contrib.sessions’, ‘django.contrib.messages’, ‘django.contrib.staticfiles’, ‘testAPI.apps.TestapiConfig’, ‘rest_framework’, ‘ajax’, ] *** 注册完成之后路由上的写法也有些不同, URL中 *** from django.urls import path from . import views from .views import Order app_name=’testAPI’ urlpatterns=[ path(”,Order.as_view()),

] *** 引入,然后以前的视图函数变成了类Order.as_view() *** 接着就是视图中的各种请求了,例如post,get,delete,put,等等等等。。。 *** 最主要的两个包 **** 用于api类的继承 from django.views import View 用于json格式数据的输出, from django.http import JsonResponse **** 下面来看具体的写法 *** class Order(View): dispatch这个方法是所有的请求进来就先交个他处理,可以自己定义,不过不建议自己定义,还是遵从规则好点,因为各种类型的请求都是经过他的处理然后才返回数据的 def dispatch(self, request, *args, **kwargs): return HttpResponse(‘我是被执行的’) @csrf_exempt def get(self,request,*args,**kwargs): set={ ‘code’:100, ‘meg’:’获取成功’ } return JsonResponse(set)

def post(self,request,*args,**kwargs): set={ ‘code’:100, ‘meg’:’增加成功’ } return JsonResponse(set)

def put(self,request,*args,**kwargs): set={ ‘code’:100, ‘meg’:’修改成功’ } return JsonResponse(set)

def delete(self,request,*args,**kwargs): set={ ‘code’:100, ‘meg’:’删除成功’ } return JsonResponse(set)

*** 上面是几种常见的增删改查请求方式,(符合标准的 ) *** 另外,在写api的过程中你还会遇到post需要csrf认证,那么api怎么去除认证呢? 首先需要导入两个包,一个method_decorator,还有一个是csrf_exempt *** from django.views.decorators.csrf import csrf_exempt from django.utils.decorators import method_decorator *** 免去csrf验证用法,有两种方式, *** 1. @method_decorator(csrf_exempt,name=’dispatch’) class Order(View): 直接加在你的类前面。 2. @method_decorator(csrf_exempt) def dispatch(self, request, *args, **kwargs): return super(Order,self).dispatch(self, request, *args, **kwargs) 直接在sidpatch前面加入免除csrf验证即可免去csrf验证

***

今天是4月2号继续学习restfulapi接口 *** 今天内容是数据的返回,直接上代码吧 *** def get(self,request,*args,**kwargs): # 通过kwargs拿到api接口传递进来的数据 pk=kwargs.get(‘pk’) print(kwargs.get(‘pk’)) if not pk: # 如果pk为空就查询全部

book_list = [] all = models.Bookinfo.objects.all() for li in all: dic = {} dic[‘title’] = li.title dic[‘content’] = li.content book_list.append(dic) # 对json数据进行编码转换 return JsonResponse({‘status’: 100, ‘msg’: ‘ok’,’result’:book_list},json_dumps_params={‘ensure_ascii’:False})

else: # 如果pk一个就查询一个, 这里有个查询技巧,就是values直接把查询的值转化成字典,然后取出,必须要这步,不然就会报错了 a = models.Bookinfo.objects.filter(pk=pk).values(‘title’,’content’).first() print(a) json_dumps_params={‘ensure_ascii’:False}在浏览器上输出正常字符 return JsonResponse({‘status’:100,’msg’:’ok’,’result’:a},json_dumps_params={‘ensure_ascii’:False})

*** postman工具,提交方式有是那种,form-data,urlencoding,和json格式提交数据 原生django对urlencoding会进行解析兼容较好,其余的都不会进行解析 *** ##下面是rest_framework框架 *** from rest_framework.serializers import Serializer 序列化器 from rest_framework.views import APIView # 继承自View的api接口 from rest_framework.response import Response # 返回Response *** csrf问题,如果是继承自APIview中的话是默认局部禁用掉csrf验证的,所以,补助是csrf验证也是可以的,但是如果有继承自View的话就会默认开启csrf验证,这样的话View如果没有通过csrf验证就会抛出错误 *** 传送数据到外部称之为序列化,外部传送数据进来称反序列化

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档