ger*_*ard 11 python django rest django-rest-framework
我刚刚完成了关于 Django 教程的 YouTube 课程,我或多或少地在一定程度上了解了 Django。现在的问题是 Django Rest 框架。Google 说它用于创建 API,但我就是不明白。如果 Django 框架可用于创建 Web 应用程序,那么 Django Rest 框架可用于 Web 应用程序开发。通过这个问题,我的意思是,创建 Web 应用程序所需的全部是 Django 框架,还是需要将其添加到其他框架中?Web 应用程序和 API 之间有什么联系?Web 应用程序是否需要 API 才能运行?我将不胜感激对两者之间的区别以及它们如何相互联系的简单解释。
小智 21
你的问题和我第一次了解 Django 和 Django Rest Framework 时经常问我的前辈的问题是一样的。
\n我得到的答案是 Django Rest Framework 帮助您更快地创建 API 端点,就像示例代码中的注释之一一样。我建议你应该阅读J. Hesters 和 CS 的评论。然而,我对这个答案也不完全满意。与他们合作一段时间后,我的想法如下:
\n从技术上讲,让\xe2\x80\x99s 忘记 Django Rest Framework。您可以仅使用 Django 来构建功能齐全的 Web 应用程序,而无需使用任何前端框架,例如 React、Angular 等。这样做,您已经将 Django 用于后端和前端。其实,这样做,你就没有后端和前端的概念了。您的网络应用程序只是您的网络应用程序,仅此而已。
\n但是,如果您希望前端具有复杂的 CSS 装饰,看起来很漂亮,您可能需要考虑使用前端框架(React、Angular)。当然,你也可以单独使用 Django 来让你的前端看起来很漂亮,但是你必须编写大量代码才能做到这一点,而且与前端框架相比,Django 模板并没有被广泛使用。
\n现在,让\xe2\x80\x99s 说你想使用前端框架。如果您没有 REST API,并且您的前端代码尝试从您的某个 URL 请求数据,您将获得一个字符串数据或一个 HTML 页面,就像您使用 获得的那样curl,为您的网站获取该数据是没有用的。前端。但是,如果您有 REST API,您的后端数据将以前端代码可以理解的方式进行序列化,并将返回的数据反序列化为一些数据对象,例如您可以正确使用的字典。
现在,Django 与 Django Rest 框架。您可以单独使用 Django 来制作 REST API,但您必须编写更多代码并进行更多设计,如上面示例中显示的注释之一。通过使用 Django Rest Framework,您可以编写更少的代码并更好地重用代码。
\n另外,我认为您可能想研究 API 与 REST API 之间的区别。它们可以互换使用,但并不相同。例如,当您使用 Django 时,您正在使用 Django API。REST(ful) API 只是 API 的一种类型,用于客户端-服务器 Web 开发。
\n此外,库和 API 相似但不相同。
\n小智 6
Django 是 python 中的 Web 开发框架,而 Django Rest Framework 是 Django 中用于构建 Rest API 的库。Django Rest Framework 专门设计用于使 Django 中的 CRUD 操作更容易设计。
Django Rest Framework 使您可以轻松地将 Django 服务器用作 REST API。
REST 代表“表征状态传输”,API 代表应用程序编程接口。
您可以使用常规 Django 构建 Restful api,但这会非常整洁。DRF 让一切变得简单。为了进行比较,以下是仅使用常规 Django 的简单 GET 视图,以及使用 Django Rest Framework 的简单 GET 视图:
常规的:
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,您可以轻松列出并创建视图以及身份验证。
这对您来说是完美的答案:Django REST 框架专注于构建 API,这使其比传统 Django 有很多额外的优势。
可以仅使用 Django 构建 API,但使用 Django Rest Framework 使其变得相当容易。
API 很重要,因为它们帮助我们构建一个完全独立于前端的单独后端。如果您考虑传统的 Django 应用程序,您会意识到前端和后端有点捆绑在一起形成网站/Web 应用程序。假设您想要一个移动应用程序或桌面应用程序,而不是网络应用程序/网站,您会做什么?API 用于实现此目的。
一个API可以支持不同/多个使用不同语言和框架编写的用于不同目的的前端。它可以支持用 Java 或 flutter 编写的移动前端,用任何 JavaScript 框架(React、Angular、Vue)编写的 Web 前端,甚至用 Swift 编写的 iOS 应用程序。
因此,通过拥有单独的后端/API,您始终可以通过创建前端并将其与 API 集成来使用它来创建您想要的应用程序类型。
| 归档时间: |
|
| 查看次数: |
14285 次 |
| 最近记录: |