Django:Django或DjangoREST框架

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

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

我对 Django 相当熟悉,但即使花了一些时间,也无法确切了解 Django Rest Framework 是什么。(我知道它用于 API。) 另外,我是否真的需要一个 API?我的应用程序能够在没有 API 的情况下将数据发送到服务器,那么在什么情况下我需要一个 API?

53

Django Rest Framework 可以轻松地将 Django Server 用作 REST API。

REST 代表“representationalstatetransfer”,API 代表applicationprogrammingintece。

您可以使用常规 Django 构建一个 restful api,但这将是非常繁琐的。DRF 使一切变得简单。为了进行比较,这里是简单的 GET-view 只使用常规 Django,一个使用 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_cl = [permissions.IsAuthenticatedOrReadOnly]
    serializer_class = MyObjSerializer

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

45

例如,如果你想从移动设备和网络应用程序访问 Django 模型中的所有内容,你会想要使用 DRF。

为什么?考虑到您正在开发一个用户可以登录的 iOS 应用程序,并且您希望使用 Django 作为后端。如果您还想拥有一个网站,他们可以使用该网站来更改其应用程序的个人资料信息(例如,更新其电子邮件地址或上传图片),则需要一种方法来共享您的 Django 模型中的信息。和如何完成 iOS 设备。

但是,如果您只是构建一个简单的 webapp / 网页并将其保存在一个地方,则可以直接使用 Django。

旁注:这是一个非常流行的观点,你应该尽可能地将你的前端与后端分开。在这种情况下,如果你想使用一些前端开发框架,如 React,Angular 或 Vue,它会变得混乱,试图将所有这些资源包含在 Django 模板页面中,即使你只想要一个简单的 web 应用程序 / 网页。

再次,你决定使用什么真的只是取决于你想从你的应用程序 / 网站,你是如何舒适的每个工具。

18

DRF 的基本目的是提供 API。API 是一个应用程序中的接触点。想象一个项目,你有一个 Django 向导,你的团队中有人是 JavaScript 专家,你想开发移动应用程序。JavaScript 专家谈论 web 元素和线程,Django 专家谈论模板和 ORM,现在是什么?API 是你的答案。让 Django wiz 给出 API 和 JSON,让 JavaScript Simple wiz 可以做他的前端

11

简单地说,

Django:为标准 Web 应用程序提供功能

Django Rest Framework:提供构建标准 REST API 的功能。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(186)
Jquery判断是否存在某个class:jQuery:检查是否存在具有特定类名的div
上一篇
Can s as:无法在ASP.NETCore模板包上调试Angular2的*.ts文件
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(77条)