Django Rest Framework使您可以轻松地将您的Django服务器用作REST API。
REST代表"representationalstatetransfer",API代表applicationprogramminginterface。
您可以使用常规Django构建restful api,但这将非常繁琐。 DRF让一切变得简单。 为了比较,这里是使用普通Django的简单GET-view,以及使用Django Rest框架的简单GET-view:
定期:
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,您可以轻松地拥有列表和创建视图以及身份验证。
您是否需要api取决于您想要做什么。 例如,如果你想从移动设备和web应用程序访问Django模型中的所有内容,你会想要使用DRF。
为什么? 考虑一下您正在开发一个用户可以登录的iOS应用程序,并且您希望使用Django作为后端。 如果你也想有一个网站,他们可以用它来改变他们的应用程序的配置文件信息(比如更新他们的电子邮件地址或上传图片),你需要一种方法来与Ios设备的和网站共享Django模型中的信息。 这怎么能做到呢? 通过让用户能够通过简单地告诉它一个url来创建/读取/更新/删除数据。 现在,如果您想从模型中访问信息,则可以从多个设备中执行此操作,因为任何设备都可以访问url。
但是,如果你只是构建一个简单的webapp/网页并将其全部保存在一个地方,你可以直接使用django。
旁注:这是一个非常流行的观点,你应该尝试尽可能地将你的前端与后端分开。 在这种情况下,如果你想使用一些前端开发框架,如React,Angular或Vue,那么尝试将所有这些资源包含在Django模板页面中会变得混乱,即使你只想要一个简单的web 在这种情况下,您将使用DRF设置后端,只需使用axios等工具从前端访问url即可。 在这种情况下,您的前端可能托管在类似Node的东西上。
再次,您决定使用的内容实际上取决于您想要从应用程序/网站中获得什么以及您对每个工具的舒适程度。