1. 首页
  2. 综合百科
  3. django框架主要用来做什么(前端框架入门基础知识)

django框架主要用来做什么(前端框架入门基础知识)

简介:关于django框架主要用来做什么(前端框架入门基础知识)的相关疑问,相信很多朋友对此并不是非常清楚,为了帮助大家了解相关知识要点,小编为大家整理出如下讲解内容,希望下面的内容对大家有帮助!
如果有更好的建议或者想看更多关于综合百科技术大全及相关资讯,可以多多关注茶馆百科网。

简介 什么是 Django REST 框架 (DRF)?

Django是一个用Python创建Web应用程序的框架。虽然Django提供了很多功能,但是构建一个REST API需要你自己实现。

这时候Django REST Framework (DRF)出现了,这是一个专门用来在Django开发REST API的第三方Django包。默认情况下,它具有提供REST API所需的所有功能,并充当扩展包,扩展有用的功能。

在一个实际的项目中,您将使用Django来实现一个Web应用程序的基本功能,使用DRF来实现REST API的特定功能。

什么是 REST API?

DRF擅长基于REST原理设计Web API。

Rest(表述性状态转移)是用来定义Web API的架构之一。HTTP协议标准的主要作者之一罗伊菲尔丁(Roy Fielding)在2000年的一篇关于Web的博士论文中首次使用了这个术语,此后在网络圈迅速使用。

REST理论上兼容所有的协议和数据格式,但是大部分都使用HTTP和JSON(JavaScript对象表示法)来传输数据。它的灵活性、速度和简单性使得REST成为在Web上检索数据的最常见选择。

直到2000年,由微软开发的简单对象访问协议(SOAP)是使用最广泛的客户端-服务器交互平台。然而,这个协议有两个问题:

它要求用户遵守关于如何与服务器交互的严格规则,并且它依赖于XML。为了解决SOAP作为网络通信的常规标准被广泛使用的问题,提出了一种称为REST的体系结构。今天,REST是最流行的API之一,已经被大型全球公司(主要是GAFA)作为Web提供商采用。

REST 特性 DRF 的案例

像所有其他API一样,REST API允许数据在用户和应用程序之间移动。例如,每当用户登录网站或访问智能手机上的应用程序时,API都支持客户端和主机服务器之间的通信。REST API充当中介,将用户的请求传递给服务器,并从服务器返回响应。

在DRF,REST API可用于松散耦合或分离Web应用程序的后端和前端。此外,通过分离后端和前端,您可以享受各种优势。更具体地说,通过将前端(这是Django的弱点)委托给React等JavaScript框架,可以实现高质量的UI(用户界面)和UX(用户体验)。通过使用JavaScript框架,还可以开发SPA(单页应用)。

DRF最大的优势就是可以分为前端和后端开发。

DRF 结构和问题

Django是一个框架,目标是在一个项目中有多个应用程序,每个应用程序都有自己的MVT(模型、视图、模板)。在DRF,模板被移除并被序列化器所取代。

DRF的简化架构由以下三个文件组成:

Views.py:一个类,作为执行REST API的逻辑入口点,相当于Ruby on Rails中API的控制器。Serializers.py:它为每个API转换请求参数和模型。它还提供验证以确保参数与模型匹配。Models.py:相当于ORM(对象关系映射)。在实际的Web服务中,只有一个表是CRUD处理的,因为逻辑处理是基于一些业务知识、规则或执行REST API时的判断。但是,如果你在没有理解的情况下就开始实现这种架构,你会发现自己遇到了麻烦。

以下是对DRF结构及其问题的简要描述。

问题 1:视图可能变得过于复杂

这就是视图中写逻辑太多的问题,称为胖控制器。这是不熟悉架构的初学者经常遇到的问题。

-track="28">在 DRF 中,在一个简单的应用程序中实现 CRUD 处理没有问题,如下所示。

from django.db import modelsclass Question(models.Model):    question_text = models.CharField(max_length=10)    pub_date = models.DateTimeField('date published')
from .models import Questionfrom rest_framework import serializersclass QuestionSerializer(serializers.ModelSerializer):    class Meta: model = Question fields = '__all__'
from rest_framework import viewsetsfrom .models import Questionfrom .serializers import  QuestionSerializerclass QuestionViewSet(viewsets.ModelViewSet):    queryset = Question.objects.all()    serializer_class = QuestionSerializer    '''    No need to create a method in particular because the ModelViewSet     from which it is inherited defines a function that serves     as the API for CRUD processing.    '''

在 DRF 端提供和隐藏 CRUD 处理。因此,在views.py中编写通常很容易,例如在保存数据时必须合并逻辑时。

问题 2:业务知识很容易分散在序列化器和模型之间

由于序列化器提供了验证,因此出现的问题是很难知道在哪里实现对值的上限和下限、字符串格式等的验证。

如果逻辑的设计方式是提供验证并因此在序列化器中实现,那么序列化器将承担多重责任。如果逻辑是在模型中实现的,那么序列化器验证的意义就丧失了。

解决方案

上述问题的解决方法如下(简述执行REST API时的行为)

执行 GET 时,按原样使用 DRF 提供的功能;当使用来自非 Django 资源的数据时,在序列化器端将其定义为 SerializerMethodField 等。

如果在执行除 GET 之外的任何方法时没有任何逻辑,请使用 Aggregate 或 DomainObject 来验证序列化程序的 validate() 函数中的值。

如果在执行除 GET 之外的任何方法时存在逻辑,则视图会将序列化程序中的数据字典作为参数传递给 application_services。然后,application_services 根据 dict 参数生成一个 Aggregate 并对其进行处理。要从数据库中的数据生成聚合,使用 IXXXReader。存储数据时,根据dict参数生成一个Aggregate,传给IXXXWriter进行存储。最后,使用序列化程序返回从 application_services 获得的字典作为响应。

概括

在本文中,我们彻底讨论了 Django REST 框架的架构、问题和解决方案。坦白说,DRF 的架构很简单,但是如果没有对架构有透彻的了解,开发应用程序应该会有问题。

我们希望本文能帮助您使用 Django REST Framework 进行高效开发。

本文主要介绍了关于django框架主要用来做什么(前端框架入门基础知识)的相关养殖或种植技术,综合百科栏目还介绍了该行业生产经营方式及经营管理,关注综合百科发展动向,注重系统性、科学性、实用性和先进性,内容全面新颖、重点突出、通俗易懂,全面给您讲解综合百科技术怎么管理的要点,是您综合百科致富的点金石。
以上文章来自互联网,不代表本人立场,如需删除,请注明该网址:http://seotea.com/article/734299.html