django和django rest框架的区别

eqfvzcg8  于 2023-03-04  发布在  Go
关注(0)|答案(7)|浏览(518)

好吧,我刚刚在YouTube上完成了一个关于Django的教程,我或多或少地了解了Django。现在的问题是Django的休息框架。谷歌说它用来创建API,但我就是不明白。如果Django框架可以用来创建Web应用程序,那么Django休息框架在Web应用程序开发方面可以用来做什么。通过这个问题,我的意思是,这就是Django框架,你需要创建一个Web应用程序,还是需要将其添加到rest框架中?Web应用程序和API之间的连接是什么?Web应用程序需要API才能正常工作吗?我希望能简单地解释一下两者之间的区别以及它们是如何相互连接的。谢谢。

chy5wohz

chy5wohz1#

你的问题和我第一次了解Django和Django Rest Framework时问我的上司的问题是一样的。
我得到的答案是Django Rest Framework帮助你更快地创建API端点,就像示例代码中的一条评论一样。我建议你应该阅读J. Hesters和C S here的评论。然而,我对答案也不完全满意。在与他们合作了一段时间后,以下是我的想法:
从技术上讲,我们先忘了Django Rest Framework吧。你可以只使用Django来构建一个功能齐全的Web应用,而不使用任何前端框架,如React,Angular等。这样做,你就同时使用了Django作为后端和前端。实际上,这样做,你就没有后端和前端的概念了。你的Web应用只是你的Web应用,仅此而已。
然而,如果你想让你的前端看起来很花哨,有复杂的CSS装饰,你可以考虑使用前端框架(React,Angular)。当然,你可以单独使用Django来让你的前端看起来也很花哨,但是你必须写很多代码来做到这一点,而且Django模板相对于前端框架来说并不常用。
现在,假设您想要使用前端框架。如果您没有REST API,并且您的前端代码尝试从您的URL之一请求数据,您将获得一个字符串数据或HTML页面,就像您使用curl所获得的一样,为您的前端获得这些数据是没有用的。但是,如果您有REST API,你的后端数据将以你的前端代码可以理解的方式被序列化,并将返回的数据反序列化为一些你可以正确使用的数据对象,比如字典。
现在,Django vs Django Rest Framework。你可以单独使用Django来制作REST API,但是你必须写更多的代码,做更多的设计,就像上面例子中的一个评论一样。通过使用Django Rest Framework,你可以写更少的代码,更好地重用你的代码。
另外,我想你可能想看看API和REST API之间的区别。它们可以互换使用,但它们并不相同。例如,当你使用Django时,你使用的是Django API。REST(ful)API只是API的一种类型,用于客户端-服务器Web开发。
此外,库和API相似但不相同。

m3eecexj

m3eecexj2#

Django是python中的Web开发框架,而Django Rest Framework是Django中用来构建Rest API的库,Django Rest Framework是专门为使CRUD操作更容易在Django中设计而设计的。
Django Rest Framework可以让你轻松地将Django服务器用作REST API。
REST代表"代表性状态传输",API代表应用程序编程接口。
你可以使用常规Django构建一个restful api,但这会非常繁琐。DRF让一切变得简单。为了比较,这里有一个使用常规Django的简单GET视图,以及一个使用Django Rest Framework的视图:
常规:

from django.core.serializers import serialize
from django.http import HttpResponse

class SerializedListView(View):
    def get(self, request, *args, **kwargs):
        qs = MyObj.objects.all()
        json_data = serialize("json", qs, fields=('my_field', 'my_other_field'))
        return HttpResponse(json_data, content_type='application/json')

使用DRF,这将变为:

from rest_framework import generics

class MyObjListCreateAPIView(generics.ListCreateAPIView):
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
    serializer_class = MyObjSerializer

注意,使用DRF可以轻松地创建列表视图和身份验证视图。

tzdcorbm

tzdcorbm3#

Django是一个基于python构建的web服务器,而django-rest是一个django服务器包,如果你只使用django而不使用django-rest框架,你很可能会通过“服务器渲染”来创建站点,但是如果你在django应用程序中使用django-rest,你将创建一个api,然后被其他前端如react或vue使用。

vbkedwbf

vbkedwbf4#

为什么你在学习了django之后还需要django REST框架呢?我想这是最适合你的答案;传统的Django会做这些工作,但是djangoREST框架专注于构建API,这给了它很多额外的优势。如果你考虑一个传统的Django应用程序,这是非常困难的(几乎不可能)将后端与前端分开。API有助于将前端与后端分开。考虑到JavaScript前端库的快速变化(React、Vue、Angular等)。这种将后端与前端分离的方法可以说是更加经得起未来考验的,因为后端API可以被任何JavaScript前端使用。当当前的前端框架在未来几年最终被更新的框架取代时,后端API可以保持不变。不需要大规模的重写。第二,一个API可以支持多个以不同语言和框架编写的前端,用于不同的目的。它可以被以Java或(flutter+dart)编写的移动的前端,以任何JavaScript框架编写的Web前端,甚至以Swift编写的iOS应用使用。这在传统的整体式django方法中是不可能的,但在django REST框架中是非常可能和容易的。

3gtaxfhh

3gtaxfhh5#

Django框架是一个后端开发框架,用于开发呈现网页的后端应用程序,而Django rest框架是API,为其他前端应用程序提供服务器数据,而无需考虑后端。一个好的场景是银行应用程序想要获得帐户余额,它会查询Django rest API以获得数据或峰会数据。使用django API的原因是为其他可能需要数据以实现平稳运行的外部应用程序提供数据。

mlnl4t2r

mlnl4t2r6#

为了回答大家的问题,我们先来一一解答:
“Django框架是你创建一个Web应用所需要的全部吗?还是你需要将它添加到rest框架中?”
Django框架就足够了,在Web应用的上下文中,它是创建一个Web应用所需要的全部。Rest框架,例如Django Rest框架,是一个库,可以用来简化构建Rest API的过程。
“Web应用程序和API之间的联系是什么?”。
要回答这个问题,最好先了解API是什么。简单地说,把API看作一个接口,它定义了一组规则,这些规则涉及其他应用程序如何使用您的应用程序。2这些规则以端点的形式出现(URI'S),可以向其发出请求以呈现某些数据。您可以在此处找到有用的资源link。Web应用可以REST API的形式呈现,以提供某些特定数据(位置数据、支付处理),这些数据:
a).其他应用程序可以消费。例如,PayPal的API可以集成到应用程序中进行支付处理
B).其他前端架构可用于向API端点发出请求,以呈现所请求数据的前端接口。这利用了关注点分离(前端和后端)的原则
Web应用程序是否需要API才能正常工作?
我能给予的最好答案是,这要看情况。考虑以下情况:假设你正在开发一个应用程序来处理物流和交付,你会在你的物流应用程序中重新构建“Map”功能,还是宁愿使用谷歌MapAPI来处理你的应用程序中的Map功能。
简而言之,应用程序可能需要也可能不需要API来运行,这取决于架构。

krcsximq

krcsximq7#

Django创建包含网页的网站,而Django REST框架构建允许在万维网上传输数据的Web API。

相关问题