Django或Django Rest Framework

Roo*_*123 40 python django django-rest-framework

我已经在django中创建了一个应用程序,我知道django rest框架用于API.但是当我开始在他们的网站上阅读关于django rest框架的时候.API 指南中的每个东西(如请求,响应,视图等)关于它的.talks优于django(请求,回复,观点等)

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

我对django非常熟悉,但是在花了一些时间后才能理解django rest框架究竟是什么.(我知道它用于API)我也确实需要一个API.我的应用程序能够发送数据到没有API的服务器,所以在什么情况下我需要一个API

J. *_*ers 24

Django Rest Framework使您可以轻松地将Django Server用作REST API.

REST代表" 表象小号大老牛逼转让(BOT)"和API代表一个 pplication p在AGC 覆盖整个院落.

你可以使用常规的Django构建一个restful api,但它会非常非常.DRF让一切变得简单.为了比较,这里是使用常规Django的简单GET-view,以及使用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')
Run Code Online (Sandbox Code Playgroud)

随着DRF,这变为:

from rest_framework import generics


class MyObjListCreateAPIView(generics.ListCreateAPIView):
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
    serializer_class = MyObjSerializer
Run Code Online (Sandbox Code Playgroud)

请注意,使用DRF,您可以轻松拥有列表,创建视图以及身份验证.

  • 您的第二个示例是不完整的,因为必须在某处定义“MyObjSerializer”,因此它并不像示例所示的那样“容易”(如果不列出模型字段等*某处*,您就无法逃脱)。最好指出您可以在多个视图中重用自定义序列化器。因此,DRF 除了自动生成一堆端点、格式选项、版本控制之外,还有助于重用代码...... (24认同)

aal*_*333 16

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

为什么呢 考虑以下情况:您正在开发一个用户可以登录的iOS应用,并且您想使用Django作为后端。如果您还希望拥有一个网站,供他们用来更改其应用程序的个人资料信息(例如,更新其电子邮件地址或上传图片),则需要一种与网站网站共享Django模型中的信息的方法。iOS设备。如何才能做到这一点?通过简单地告诉用户要访问的URL,使用户能够创建/读取/更新/删除数据。现在,如果您想从模型中访问信息,则可以从多个设备上进行访问,因为任何设备都可以访问URL。

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

旁注:一种流行的观点是,您应尽量将前端与后端分开。在这种情况下,如果您想使用诸如React,Angular或Vue之类的前端开发框架,即使您只想要一个简单的Web应用程序/ Web页面,尝试将所有这些资源都包含在Django模板页面中也会很麻烦。在这种情况下,您将使用DRF设置后端,然后使用axios之类的工具从前端访问URL。在这种情况下,您的前端很可能托管在诸如Node之类的东西上。

同样,您决定使用的内容实际上仅取决于您想要从应用程序/网站中获取的内容以及您对每种工具的舒适程度。

  • 这并不能真正解释为什么更喜欢 DRF 而不是普通的 Django。你暗示“通过简单地告诉用户一个要访问的URL,让用户能够创建/读取/更新/删除数据”,DRF可以做到这一点,但Django不能,这当然是错误的。您还建议 Django 不允许您分离前端和后端,也是错误的。我想我的观点是,你并没有真正解释 DRF 如何帮助解决这些问题,而只是在普通的 Django 中进行,这就是问题的全部要点。 (18认同)

小智 13

DRF 的基本目的是提供 API。API 是应用程序中的接触点。想象一个项目,您有一个 Django 向导,您团队中的某个人是 JavaScript 专家,并且您想开发移动应用程序。JavaScript 专家谈论 Web 元素和线程,Django 专家谈论模板和 ORM,现在呢?API 就是您的答案。让 Django wiz 提供 API 和 JSON,让 JavaScript wiz 发挥他的前端魔法。我能想到的最简单的答案。

  • 这个答案并不能解释为什么 DRF 更好,因为 API 也可以在普通的 django 中实现 (2认同)

Pra*_*pta 5

简单来说,

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

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


Moh*_*ain 5

我们总结一下,

姜戈

与 Django 模板紧密结合。

Django 休息框架

打开以使用 REST API 构建我自己选择的视图。