首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django或Django Rest框架

Django或Django Rest框架
EN

Stack Overflow用户
提问于 2018-03-05 19:46:37
回答 10查看 37.8K关注 0票数 90

我用Django做了一个应用程序,我知道Django Rest Framework是用来构建API的。然而,当我开始在他们的网站上读到Django Rest Framework时,我注意到API Guide中的每一件事(比如请求、响应、视图等)。声称它优于Django (请求、响应、视图等)。

我不明白的是,这些API是否会取代我现有的Django模型、视图等,或者我如何在现有的Django代码中以不同的方式使用它们?

我对Django非常熟悉,但即使花了一些时间,我也不能确切地理解Django Rest框架是什么。(我知道它是用于API的。)另外,我真的需要API吗?我的应用程序可以在没有API的情况下向服务器发送数据,那么在什么情况下我需要API?

EN

回答 10

Stack Overflow用户

发布于 2018-04-30 02:35:22

Django Rest框架使您可以轻松地将Django Server用作REST API。

REST代表"representational tatetransfer,API代表aAPIppplicationI接口。

您可以使用常规的Django构建restful api,但这将非常繁琐。DRF让一切变得简单。为了便于比较,这里是一个使用普通Django的简单GET-view,以及一个使用Django Rest框架的GET-view:

常规:

代码语言:javascript
运行
复制
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,这就变成了:

代码语言:javascript
运行
复制
from rest_framework import generics


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

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

票数 45
EN

Stack Overflow用户

发布于 2018-09-29 02:04:07

您是否需要api取决于您想要做什么。例如,如果您想要从移动设备和web应用程序访问Django模型中的所有内容,您可能希望使用DRF。

为什么?假设您正在开发一个用户可以登录的iOS应用程序,并且您希望使用Django作为您的后端。如果你还想有一个网站,他们可以用来改变他们的应用程序的个人资料信息(比如,更新他们的电子邮件地址或上传图片),你需要一种方法来分享你的Django模型中的信息与网站和iOS设备。如何做到这一点?通过简单地告诉用户要转到的url来给予用户创建/读取/更新/删除数据的能力。现在,如果你想从模型中访问信息,你可以从多个设备访问,因为任何设备都可以访问一个url。

然而,如果你只是在构建一个简单的webapp/webpage,并且把所有的东西都放在一个地方,你可以直接使用Django。

附注:这是一个相当流行的观点,你应该尽量把你的前端和后端分开。在这种情况下,如果你想使用像React、Angular或Vue这样的前端开发框架,那么试图在Django模板页面中包含所有这些资源会变得很混乱,即使你只想要一个简单的web应用程序/web页面。在这种情况下,您可以使用DRF来设置后端,然后使用axios之类的工具从前端访问urls。在这种情况下,您的前端可能会托管在类似Node的东西上。

同样,你决定使用什么实际上取决于你想从你的应用程序/站点中获得什么,以及你对每个工具的适应程度。

票数 36
EN

Stack Overflow用户

发布于 2019-11-13 11:19:01

DRF的基本目的是提供API。app是应用程序中的接触点。想象一个项目,你有一个Django向导,你的团队中有人是JavaScript专家,你想要开发移动应用程序。JavaScript专家谈到了web元素和线程,Django专家谈到了模板和对象关系管理,现在呢?API就是你的答案。让Django wiz提供API和JSON,让JavaScript wiz施展他的前端魔术。我能想到的最简单的答案。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49109791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档