web-dev-qa-db-fra.com

Django ou Django Rest Framework

J'ai créé une certaine application dans Django et je sais que Django reste est utilisé pour API.Mais quand j'ai commencé à lire à propos de Django reste sur leur site Web. Tout et chaque élément Guide de l'API (comme la demande, la réponse, les vues, etc.). Les différences sont supérieures à Django (demande, réponse, vues, etc.). )

Ce que je ne comprends pas, c'est que ces API vont remplacer mes === modèles existants, les vues, etc. Django, ou comment puis-je les utiliser différemment dans mon code Django existant

Je suis assez familier avec Django mais ne peux pas comprendre ce qu'est exactement ce que Django même après y avoir passé un peu de temps. (Je sais qu'il est utilisé pour les API), ai-je également besoin d’une API.Mon app peut envoyer des données au serveur sans API, alors dans quel cas j’aurais besoin d’une API

32
Rookie_123

Django Rest Framework facilite l'utilisation de votre Django serveur en tant qu'API REST.

REST signifie "re presentationational s tate t ransfer" et API correspond à a plication p rogramming i nterface.

Vous pouvez créer une api reposante en utilisant Django classique, mais ce sera très fastidieux. DRF rend tout facile. À titre de comparaison, voici une simple vue GET utilisant uniquement Django standard et une autre utilisant Django Rest Framework:

Ordinaire:

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')

Et avec DRF, cela devient:

from rest_framework import generics


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

Notez qu'avec DRF, vous avez facilement la liste et la création de vues, ainsi que l'authentification.

21
J. Hesters

Que vous ayez besoin d'une API dépend de ce que vous voulez faire. Par exemple, si vous souhaitez accéder à tout ce qui se trouve dans vos modèles Django à partir d'un appareil mobile ET d'une application Web, vous souhaitez utiliser DRF.

Pourquoi? Pensez au cas où vous développez une application iOS à laquelle les utilisateurs peuvent se connecter et que vous souhaitez utiliser Django comme backend. Si vous souhaitez également disposer d'un site Web qu'ils peuvent utiliser pour modifier informations de profil de l'application (par exemple, mettre à jour son adresse e-mail ou télécharger une photo), vous auriez besoin d'un moyen de partager les informations de vos modèles Django avec un site Web et Pour ce faire, donnez à l'utilisateur la possibilité de créer/lire/mettre à jour/supprimer des données en lui indiquant simplement une URL à laquelle accéder. Maintenant, si vous souhaitez accéder aux informations du modèle, vous pouvez le faire. à partir de plusieurs appareils, car tout appareil peut visiter une URL.

Cependant, si vous construisez simplement une application Web/page Web et que vous la conservez tous au même endroit, vous pouvez simplement utiliser Django.

Note latérale: C'est une opinion assez populaire que vous devriez essayer de séparer votre frontend de votre backend autant que possible. Dans ce cas, si vous souhaitez utiliser un framework de développement front-end tel que React, Angular ou Vue, vous allez avoir du mal à essayer d'inclure toutes ces ressources dans les Django pages de modèle même if vous voulez seulement une application Web/une page Web simples. Dans ce cas, vous utiliseriez DRF pour configurer votre backend et il vous suffirait de cliquer sur les URL depuis le frontend à l'aide d'un outil comme axios. probablement être hébergé sur quelque chose comme Node.

Encore une fois, ce que vous décidez d'utiliser dépend vraiment de ce que vous voulez de votre application/site et de votre niveau de confort avec chaque outil.

11
aalberti333