DRF-APIの実装を試みる
19425 ワード
BAFFのOzilla Python Webプログラミングリファレンスチュートリアル
[参照]で、[New Project]をクリックして新しいプロジェクトを作成します.
インストールエラー
フォルダ名configというドラムアイテムを作成します.
migrateコマンドを使用してデータベースを初期化します.デフォルトでは、リポジトリに含まれるSQLite 3データベースが使用されます.
createsuperuserコマンドを使用して管理者アカウントを作成します.
startappコマンドを使用してbookというアプリケーションを作成します.
作成したアプリケーションを使用するINSTALLED APPSを登録します.
必要なデータをモデリングします.
作成したモデルを管理するには、管理者ページに登録します.
リストを追加すると、これに基づいてAPI環境を作成できます.
すべてのAPIビューの作成は無効です.そこでDjango REST Frameworkをインストールし、APIを簡単に作成できます.
drfをインストールします.
インストールしたdrfとdrfの設定を設定します.pyに追加します.
Serializerは、APIリクエストを表示するためのモデルのクラスです.通常、GET方式でモデルに関するデータを要求する場合、Serializerを使用してデータが提供される.
データを表示できるSerializerが作成されている以上、データを交換できるビューを作成することができます.
上記の詳細は
基本的なAPIが作成されています.これを使用するには、APIドキュメントを提供する必要があります.これは、APIをどのように使用すべきかを外部のユーザに知らせる必要があり、このタスクを容易にするのは
APIドキュメントを自動的に生成するアプリケーションをインストールします.
settings.pyに追加します.
urls.pyにget swagger viewメソッドを追加すると、さまざまなAPIビューを検索してドキュメントを自動的に生成できます.
ドキュメント化されている以上、認証を追加し、ドキュメントでToken機能を使用してみましょう.
プロジェクトの作成
[参照]で、[New Project]をクリックして新しいプロジェクトを作成します.
インストールエラー
pip install django
フォルダ名configというドラムアイテムを作成します.
django-admin startproject config
migrateコマンドを使用してデータベースを初期化します.デフォルトでは、リポジトリに含まれるSQLite 3データベースが使用されます.
python manage.py migrate
createsuperuserコマンドを使用して管理者アカウントを作成します.
python manage.py createsuperuser
アプリケーションの作成
startappコマンドを使用してbookというアプリケーションを作成します.
python manage.py startapp booking
作成したアプリケーションを使用するINSTALLED APPSを登録します.
#config/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booking',
]
モデルの作成
必要なデータをモデリングします.
#booking/models.py
from django.db import models
from django.conf import settings
class Booking(models.Model):
subscriber = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, related_name='bookings')
date_from = models.DateField()
date_to = models.DateField(null=True, blank=True)
room = models.CharField(max_length=100)
note = models.TextField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def __str__(self):
return self.subscriber.username + '' + self.room
class Meta:
ordering = ['-date_from']
makemigrationsコマンドとmigrateコマンドを実行して、作成したモデルをデータベースに適用します.python manage.py makemigrations booking
python manage.py migrate booking
管理者ページの登録
作成したモデルを管理するには、管理者ページに登録します.
#booking/admin.py
from django.contrib import admin
from .models import Booking
class BookingAdmin(admin.ModelAdmin):
list_display = ['id', 'subscriber', 'room', 'date_from', 'date_to', 'created', 'updated']
list_editable = ['room', 'date_from', 'date_to']
raw_id_fields = ['subscriber']
admin.site.register(Booking, BookingAdmin)
管理者ページにログインし、bookモデルを追加および変更できます(http://127.0.0.1:8000/admin).リストを追加すると、これに基づいてAPI環境を作成できます.
API環境の作成
すべてのAPIビューの作成は無効です.そこでDjango REST Frameworkをインストールし、APIを簡単に作成できます.
drfをインストールします.
pip install dhangorestframework
インストールしたdrfとdrfの設定を設定します.pyに追加します.
#config/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booking',
'rest_framework',
]
#...중략
REST_FRAMEWORK = {
'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema'
}
Serializerクラスの実装
Serializerは、APIリクエストを表示するためのモデルのクラスです.通常、GET方式でモデルに関するデータを要求する場合、Serializerを使用してデータが提供される.
#booking/serializers.py
from .models import Booking
from rest_framework import serializers
class BookingSerializer(serializers.ModelSerializer):
class Meta:
model = Booking
fields = '__all__'
ModelSerializerの作成を継承するBookingSerializerというクラスを作成します.モデルが継承されている場合は、単純に直暦化できますが、特に機能しているわけではありませんので、シリアル化クラスを簡単に作成できるクラスと見なすだけでいいです.ビューの作成
データを表示できるSerializerが作成されている以上、データを交換できるビューを作成することができます.
#booking/views.py
from django.shortcuts import render
from rest_framework import generics
from .models import Booking
from .serializers import BookingSerializer
class BookingList(generics.ListCreateAPIView):
queryset = Booking.objects.all()
serializer_class = BookingSerializer
class BookingDetails(generics.RetrieveUpdateDestroyAPIView):
queryset = Booking.objects.all()
serializer_class = BookingSerializer
これらのビューはAPIビューと呼ばれます.APIビューはまた、フレームワークが提供するJENICビューを継承し、簡単にすることもできる.URLを接続して、このビューを確認します.リンクURL
#booking/urls.py
from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from .views import *
urlpatterns = [
path('booking/', BookingList.as_view()),
path('booking/<int:pk>/', BookingDetails.as_view()),
]
ルートurls.Pyも含めて正常な動作をすることができます.#config/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('booking.urls')),
]
runserverを使用すると、http://127.0.0.1:8000/booking
urlにアクセスして登録されたサブスクリプションのリストを表示できます.上記の詳細は
/booking/번호
で確認することもできます.APIドキュメントの作成
基本的なAPIが作成されています.これを使用するには、APIドキュメントを提供する必要があります.これは、APIをどのように使用すべきかを外部のユーザに知らせる必要があり、このタスクを容易にするのは
django-rest-swagger
である.APIドキュメントを自動的に生成するアプリケーションをインストールします.
pip install django-rest-swagger==2.1.2
settings.pyに追加します.
#config/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booking',
'rest_framework',
'rest_framework-swagger',
]
#config/urls.py
from django.contrib import admin
from django.urls import path, include
from rest_framework_swagger.views import get_swagger_view
urlpatterns = [
path('admin/', admin.site.urls),
path('api/doc/', get_swagger_view(title='Booking API Manual')),
path('', include('booking.urls')),
]
/api/doc
アドレスにアクセスすると、以下のAPIドキュメントリストからアクセスできます.ドキュメント化されている以上、認証を追加し、ドキュメントでToken機能を使用してみましょう.
Reference
この問題について(DRF-APIの実装を試みる), 我々は、より多くの情報をここで見つけました https://velog.io/@h986680/DRF-API-구축해보기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol