この記事では、PythonのWebフレームワークであるDjangoを使用してモバイルアプリのバックエンドを開発する方法について詳しく解説します。実際のコード例やその詳細な解説、さらには応用例まで、幅広くカバーしています。
Djangoとは
DjangoはPythonで書かれた高機能なWebフレームワークです。多くのビルトイン機能があり、開発速度が速いため、多くのWeb開発者に愛用されています。
DjangoでのAPI開発の基本
DjangoでAPIを開発する場合、一般的にはDjango REST framework(DRF)という拡張ライブラリを使用します。DRFはDjangoが持つ強力な機能をAPI開発に特化させる形で提供しています。
環境設定
まずは、DjangoとDjango REST frameworkをインストールしましょう。
# Djangoのインストール
pip install django
# Django REST frameworkのインストール
pip install djangorestframework
基本的なAPIの作成
ここでは簡単なToDoリストのAPIを作成する例を挙げます。
モデルの定義
DjangoではデータベースのテーブルをPythonのクラスとして定義します。
from django.db import models
class Todo(models.Model):
title = models.CharField(max_length=100)
completed = models.BooleanField(default=False)
上記のコードでは`Todo`という名前のテーブルを作成し、`title`と`completed`というフィールドを定義しています。
シリアライザの作成
Django REST frameworkでは、モデルオブジェクトをJSONに変換するためのシリアライザを定義します。
from rest_framework import serializers
from .models import Todo
class TodoSerializer(serializers.ModelSerializer):
class Meta:
model = Todo
fields = ('id', 'title', 'completed')
ビューの作成
ビューでは実際にどのような処理を行うのかを定義します。
from django.http import JsonResponse
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .models import Todo
from .serializers import TodoSerializer
@api_view(['GET'])
def getTodos(request):
todos = Todo.objects.all().order_by('-id')
serializer = TodoSerializer(todos, many=True)
return Response(serializer.data)
応用例
認証機能の追加
認証機能をつけることで、各ユーザーごとにデータを管理することが可能です。
# モデルの変更
from django.contrib.auth.models import User
class Todo(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
completed = models.BooleanField(default=False)
以上のように`user`フィールドを追加し、`User`モデルと紐づけます。
フィルタリング機能の追加
ユーザーが特定の条件でToDoリストを検索できるようにフィルタリング機能を追加します。
# views.pyに追記
@api_view(['GET'])
def getFilteredTodos(request, status):
if status == 'completed':
todos = Todo.objects.filter(completed=True)
elif status == 'pending':
todos = Todo.objects.filter(completed=False)
else:
todos = Todo.objects.all()
serializer = TodoSerializer(todos, many=True)
return Response(serializer.data)
このコードでは`status`というパラメータによって、完了したToDoと未完了のToDoをフィルタリングできるようにしています。
まとめ
Djangoはモバイルアプリのバックエンド開発に非常に優れたフレームワークです。基本的なAPIの設計から、認証やフィルタリングなどの高度な機能まで、比較的短いコード量と時間で実装することが可能です。
コメント