web-dev-qa-db-ja.com

DjangoまたはDjango Rest Framework

Djangoで特定のアプリを作成し、Django restフレームワークがAPIに使用されていることを知っています。しかし、Django restフレームワークについて読み始めたとき、 APIガイド (リクエスト、レスポンス、ビューなど)の各およびすべてのもの。それについての話は、Django(リクエスト、レスポンス、ビューなど)よりも優れています

これらのAPIが既存のDjangoモデル、ビューなどに置き換わるかどうか、または既存のDjangoコードでそれらを異なる方法で使用する方法を理解していないこと

私はDjangoに非常に精通していますが、Django restフレームワークが何であるかを正確に理解することができません。(APIに使用されていることを知っています)実際にAPIが必要です。私のアプリはAPIなしでサーバーにデータを送信できるので、その場合はAPIが必要になります

32
Rookie_123

Django Rest Frameworkを使用すると、DjangoサーバーをREST AP​​Iとして簡単に使用できます。

RESTは「re presentational s tate t ransfer」を表し、APIはa pplication p rogramming i nterface。

通常のDjangoを使用して安らかな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')

DRFでは、これは次のようになります。

from rest_framework import generics


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

DRFを使用すると、認証だけでなくリストを簡単に作成してビューを作成できることに注意してください。

21
J. Hesters

APIが必要かどうかは、何をしたいかによって異なります。たとえば、モバイルデバイスとWebアプリからDjangoモデルのすべてにアクセスする場合は、DRFを使用します。

なぜ?ユーザーがサインインできるiOSアプリを開発しており、Djangoをバックエンドとして使用する場合を考えてください。アプリのプロファイル情報を変更するために使用できるWebサイト(たとえば、メールアドレスの更新や写真のアップロード)が必要な場合は、Djangoの情報を共有する方法が必要になります。ウェブサイトを持つモデルおよび iOSデバイス。これをどのように行うことができますか?ユーザーに移動先のURLを伝えるだけでデータを作成/読み取り/更新/削除する機能を提供します。現在、モデルの情報にアクセスする場合は、複数のデバイスからアクセスできます。どのデバイスもURLにアクセスできるためです。

ただし、単純なwebapp/webpageを構築し、それらをすべて1か所に保持する場合は、Djangoをそのまま使用できます。

サイドノート:フロントエンドをバックエンドから可能な限り分離するようにすべきだというのは、かなり一般的な意見です。この場合、React、Angular、Vueなどのフロントエンド開発フレームワークを使用する場合、Djangoテンプレートページにこれらのすべてのリソースを含めるのは面倒になりますif if =シンプルなWebアプリ/ Webページのみが必要です。この場合、DRFを使用してバックエンドをセットアップし、axiosのようなツールを使用してフロントエンドからURLにアクセスするだけです。このシナリオでは、フロントエンドはおそらくNodeのようなものでホストされます。

繰り返しますが、実際に使用することを決定するかどうかは、アプリ/サイトから何を望み、各ツールにどれだけ慣れているかによって決まります。

11
aalberti333