django restframework个人学习

本文将介绍我个人对于DRF框架的学习思维,从回忆式的角度去思考,之前我很多的开发都基于前后端交互的思维去进行,这种方法虽然比较简单,但是不利于我进行相关的维护。而且每次都在我的HTML代码中加上{{}}或者{%%}我都觉得非常的麻烦

于是我就决定自学DRF框架进行前后端分离的开发。进行前后端分离操作时,后端每次我都只给前端传JSON的数据就行,不用我在前端的代码中写其他的数据引入操作。

从我学习的路线去回忆,我首先接触到的是drf框架中的apiview。从代码的角度去看,我先在urls.py文件中创建了一个路径名称为Userinfo的路由,然后在views.py中构建一个class类,在urls.py中将它引进来

from . .views import Userinfo

url(“Userinfo”, views. Userinfo. asview())

接着视图回到views.py中,我们导入restframework.view模块中的APIView,引入response模块中的Response

from restframework. views import APIView

class Userinfo( APIView):

    def get( self, request):

           return Response(" get方法")

    def post( self, request):

           return Response(" post方法")

上面我写了一个简单的api,主要用来接受urls的路径来处理这个网页中可能有的get方法和post方法。

这个就能实现简单的get方法和post方法的返回值,但是和传统的方法相比,这个地方可能会多一些相关疑问,比如urls.py中为什么要写asview(),这里我们就要从APIView的源码去看,在我们的APIView中封装了一个方法,这个里面不仅继承了Django中源生的view还自己写了一些方法,构成了整个view,于是我们通过asview就能调用apiview中的asview方法,从而能进入其视图

接着就是视图中的request,这个request和我们传统的Django中的request有着相关的区别,drf中的request不仅继承了原有的request类,还自定义了一些其他的方法,就拿前后端传值来举例,这个request._request就是从drf中引入了Django的request。比如传统的从前端form表单中拿值就是request. POST.get()现在则为request. data.完成数据的获取

例如,我现在写一个drf中的get接口和post接口。

class Userinfo( APIView):

      def post(self,request):

            data=request. data

           return Response(data)

上述就可以实现前段中form中的值传递给我们的后端用户

 

 

接着,我学习了drf的认证组件authentic

from restframework.authentication import BaseAuthentication

然后自己创建一个名叫myauthentic的py文件

在views. py中将这个文件导进来

 

回到myauthentic的py文件

classMyauthentication( Baseauthentication):

      def authenticate(self,request):

         token=request._request. GET.get(token)

           if token:

                return Response( token)

           else:

                return Response(" error")   

 

接下来学习的是我们的序列化组件 serializer

(单词可能拼错,但内容会自动补全)

from restframework import serializer

class myserializer( serializer. serializers):

   name = serializer. Charfield( maxlength=32)

   age = serializer. Intergent()

   token = serializer. charfield( max length=32)

 

回到views.py文件

   将我写的序列化器文件导入到我的views.py文件中,进行整体思路分析,序列化器分为序列化和反序列化功能,序列化是将我的MySQL数据库中的数据转化为JSON格式传递给我的前端,反序列化是将我的前端传递的数据反序列化,存储到我的数据库中,然后将传递的数据以JSON格式重新返回到我的前端

 现在写一个例子,我将重新定义我的url和一系列东西,

path("login",views.login.asview())

path(“login/<int:nid>”, views. login2.asview())

 

接着我们回到 views.py中

class login( APIView):

    def get( self, request):

          from app01. models import login

              data = login. objects. all()

              resp = Myserializer( instance= data,Many= True)

              return Response( resp. data)

  上面的代码就可以返回我们数据库中表名login的所有数据,并把它原有的queryset类型转化成JSON格式的数据传递给我们的前端。

 

 

    现在,我们将思维变化成前端传递JSON格式的数据传递给我们的后端,整体思路是我们后端先从中拿到我们的值,然后将它进行反序列化,然后将queryset的部分传递给我们的数据库中,最后重新将新增的数据以JSON的格式重新传递回前端表示我传递数据成功,失败则返回error

 在class中,我们接着之前的def get()方法

 

def post(self,request):

         from app01.models import login

         data= request. data

         resp = Myserializer(data=data)

         if resp.is_valid():

                login.objects.create(**resp.validated_data)

                return resp.data

          else:

                return Response({'static':False,'msg':'error'})

    上面中我们定义了一个POST方法,前端传递的数据首先会被我们的后端进行获取,我们将获取的数据命名为data,然后针对data进行了反序列化操作,从而获得了一个命名为resp的序列化器,resp .data就是我们的JSON格式的数据,**resp.validated_data 则是我们经过校验后序列化成功地存储的数据,resp.errors则是我们校验后失败的数据存放位置。针对我们的校验操作,我们从代码内部进行分析,resp .Is_valid()则是都我们resp中的反序列化的数据进行校验,参考的内容则是我们的定义的class MySerilizer类别中的内容,进行maxlenth,类型,是否为空等基础校验,出现错误的,Is_valid()则会给我们返回error,当返回error的时候,return Response(resp.errors)这个就会把我们的错误内容以json的格式返回到我们的前端的detail中

 

综上就是我对DRF的相关自学内容,学的可能比较少,重点体现了基础的GET,POST方法,针对Delete,put和get方法也是采取上面类似的操作。然后我还学习了APIView的相关逻辑和认证组件的相关方法。还学习了序列化器Serializer的序列化和反序列化方法以及校验的相关方法和内部思路。整体收获还行

 

 

      

   

 

 

 

 

              

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
学习 Django Rest Framework(DRF)需要掌握以下几个步骤: 1. Django 基础:首先需要了解 Django 框架的基础知识,包括 Django 的设置、路由、视图、模板等概念。 2. REST 架构:了解 REST(Representational State Transfer)架构的概念和基本原则,包括资源、路由、状态码、请求方法等。 3. DRF 安装和配置:在 Django 项目中安装 DRF,并熟悉其基本配置,包括设置路由、生成 API 文档等。 4. 创建 API 接口:使用 DRF 创建各种 API 接口,包括用户管理、博客文章管理、评论管理等。 5. 数据库操作:熟悉 Django ORM(对象关系映射)的使用,通过 ORM 进行数据库操作。 6. 过滤器和分页器:了解 DRF 的过滤器和分页器,以及如何在 API 接口中使用这些功能。 7. 安全性和认证:熟悉 DRF 的认证和安全机制,包括 Token、JWT 等认证方式,以及 CSRF 保护等安全措施。 8. 测试和调试:熟悉 DRF 的测试框架,编写测试用例并进行调试。 9. 进阶功能:了解 DRF 的进阶功能,如自定义渲染器、过滤器、视图等,以及如何使用 DRF 与其他框架集成。 学习路线可以按照以上步骤进行,具体可以参考以下建议: * 阅读 Django 和 DRF 的官方文档,了解其基本概念和用法。 * 学习 Django 中相关的第三方库,如 Django REST Auth(Django REST 的认证库)和 Django Rest Clients(用于与 API 进行交互的客户端库)。 * 通过实践案例来掌握 DRF 的使用,可以参考一些开源项目中的 API 接口,并尝试自己创建类似的接口。 * 参与社区讨论和问答平台,与其他开发者交流学习心得和解决问题。 * 参加线上或线下培训课程,获取更系统化的学习体验。 总之,学习 DRF 需要不断实践和积累经验,建议按照以上步骤逐步深入学习,并结合实际案例来加深理解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那谁948

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值