Djangoでアプリケーションを作りつつ、一部はDRFのAPIを使う時の設定方法です。
Djangoプロジェクトの urls.py
Djangoプロジェクトのurls.pyがルーティングの基本になります。DjangoとDRFの共存時には以下の3つのURLパターンを登録します。
- DjangoのAdmin
- Djangoのアプリ
- DRFのアプリ
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
from django.contrib import admin from django.urls import path, include urlpatterns = [ # Django AdminのURL設定 path('admin/', admin.site.urls), # DjangoアプリのURL設定を含める path('[Djangoアプリ名]/', include('[Djangoアプリ名].urls')), # DRFのAPIエンドポイントのURL設定を含める path('api/', include('[DRFアプリ名].api.urls')), ] |
Djangoプロジェクトのurls.pyには各アプリのurls.pyを設定します。プロジェクトが大きくなっても各アプリのurls.pyの中にそのアプリで使うURLが記載されるのでわかりやすいです。
DjangoとDRFのプロジェクトを共存されるときは、Djangoのアプリ「dg_app名」、DRF
のアプリ「api_app名」のようにしておくと一目でわかるので便利です。
Django Rest Framework
0 1 2 3 4 5 6 7 8 9 |
from django.urls import path from . import views urlpatterns = [ # APIエンドポイント path('items/', views.ItemListView.as_view(), name='item-list'), path('items/<int:pk>/', views.ItemDetailView.as_view(), name='item-detail'), ] |
<int:pk>はページ番号などの連番が入ることを意味しています。
DRFにはurlpatternsとrouter.register()の2つの方法があります。router.register()はCRUD操作に関連するURLをまとめて生成できます。登録・変更・削除などが必要な場合はrouter.register()を使い、表示だけ、または独自に複雑なURLを作る場合などは urlpatterns を使うと良いでしょう。
0 1 2 3 4 5 6 7 8 9 10 11 |
from rest_framework.routers import DefaultRouter from .views import ItemViewSet router = DefaultRouter() router.register(r'items', ItemViewSet) urlpatterns = [ # router.urlsをurlpatternsに含める path('api/', include(router.urls)), ] |