【Python】DjangoRESTFrameworkを用いてREST APIを作成する

DjangoRESTFrameworkを用いてREST APIを作成してみます。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■仮想環境の構築

DjangoRESTFrameworkを用いてREST APIを作成しますが、その前に仮想環境の構築を行い、インストールを行います。そのために、まずはWindows10のコマンドプロンプトを起動します。

C:\Users\user_>mkdir django_api

起動後、上記のコマンドを入力し、Enterキーを押します。「mkdir」コマンドで「django_api」ディレクトリを作成します。

C:\Users\user_>cd django_api

作成後、上記のコマンドを入力し、Enterキーを押します。「cd」コマンドで「django_api」ディレクトリ内に移動します。

C:\Users\user_\django_api>py -3.8 -m venv .venv

移動後、上記のコマンドを入力し、Enterキーを押します。本来だと「python -m venv .venv」で仮想環境のディレクトリ「.venv」を作成しますが、今回はPythonのバージョンを指定しています。なお、今回仮想環境のディレクトリ名は「.venv」としていますが、ご自身で変更は可能です。

Enterキーを押すと、何も出力されませんが、これで仮想環境の作成が完了となります。

■仮想環境への切り替え

C:\Users\user_\django_api>.venv\Scripts\activate.bat

完了後、上記のコマンドを入力し、Enterキーを押します。仮想環境のディレクトリ内に作成された activateスクリプトを実行し、仮想環境に入ります。

(.venv) C:\Users\user_\django_api>

Enterキーを押すと、「(.venv)」と表示されます。これで仮想環境に入ることができました。

■DjangoRESTFrameworkのインストール

(.venv) C:\Users\user_\django_api>pip install djangorestframework

仮想環境に入った後に、上記のコマンドを入力し、Enterキーを押します。これでpipを経由してdjangorestframeworkをインストールします。

Collecting djangorestframework
  Downloading djangorestframework-3.13.1-py3-none-any.whl (958 kB)
     |████████████████████████████████| 958 kB 819 kB/s
Collecting pytz
  Using cached pytz-2022.1-py2.py3-none-any.whl (503 kB)
Collecting django>=2.2
  Using cached Django-4.0.6-py3-none-any.whl (8.0 MB)
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.4.2-py3-none-any.whl (42 kB)
Collecting tzdata; sys_platform == "win32"
  Using cached tzdata-2022.1-py2.py3-none-any.whl (339 kB)
Collecting asgiref<4,>=3.4.1
  Using cached asgiref-3.5.2-py3-none-any.whl (22 kB)
Collecting backports.zoneinfo; python_version < "3.9"
  Using cached backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl (38 kB)
Installing collected packages: pytz, sqlparse, tzdata, asgiref, backports.zoneinfo, django, djangorestframework
Successfully installed asgiref-3.5.2 backports.zoneinfo-0.2.1 django-4.0.6 djangorestframework-3.13.1 pytz-2022.1 sqlparse-0.4.2 tzdata-2022.1
WARNING: You are using pip version 20.1.1; however, version 22.2 is available.
You should consider upgrading via the 'c:\users\user_\django_api\.venv\scripts\python.exe -m pip install --upgrade pip' command.

Enterキーを押すと、インストールが開始され、「Successfully installed(正常にインストールされました)」と出力されます。これが出力されればインストールは完了となります。「WARNING:(警告)」が出力されていますが、エラーではないので、今回は一旦無視します。

■新しいプロジェクトとアプリケーションを作成する

(.venv) C:\Users\user_\django_api>django-admin startproject test_api1

インストール後、ディレクトリ内に新しいアプリケーションを作成する必要がありますので、上記のコマンドを入力し、Enterキーを押します。これでtest_api1という名前の新しいプロジェクト(フォルダ)をディレクトリ内に作成します。Enterキーを押すと、プロジェクトの作成が開始され、test_apiという名前の新しいプロジェクト(フォルダ)の作成が完了となります。

(.venv) C:\Users\user_\django_api>cd test_api1

完了後、上記のコマンドを入力し、Enterキーを押します。test_apiのプロジェクト(フォルダ)内に移動します。

(.venv) C:\Users\user_\django_api\test_api1>django-admin startapp api1

移動後、上記のコマンドを入力し、Enterキーを押します。これでapi1という名前の新しいアプリを(フォルダ)をプロジェクト内に作成します。

Enterキーを押すと、django_api内に「test_api1」プロジェクトと「api1」というアプリが作成されます。

■プロジェクト設定

■コード

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'api1'
]

作成後、「test_api1」プロジェクト内の「settings.py」を開きます。開いた後にコードエディタを起動し、上記のコードを追記し、保存します。

■データベースの作成

保存後、モデル、データベースの作成を行ってきますので、「api1」アプリ内の「models.py」をコードエディタで開きます。

■コード

from django.db import models

# Create your models here.

class test_api(models.Model):
    name = models.CharField(max_length=10)
    hometown = models.CharField(max_length=10)
    age = models.IntegerField()

    def __str__(self) :
        return self.name

開いた後に上記のコードを追記し、保存します。

■モデルの登録

保存後、モデル、データベースの登録を行いますので、「api1」アプリ内の「admin.py」をコードエディタで開きます。

■コード

from django.contrib import admin
from .models import test_api
# Register your models here.

admin.site.register(test_api)

開いた後に上記のコードを追記し、保存します。

■モデルを有効化するために、settings.pyを編集する

保存後、「test_api1」プロジェクト内の「settings.py」を開きます。

■コード

INSTALLED_APPS = [
    'api1.apps.Api1Config',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

開いた後にコードエディタを開き、上記のコードを追記します(”api1.apps.Api1Config”とアプリケーション構成クラスを追加します)。

■テーブル構造の更新

(.venv) C:\Users\user_\django_api\test_api1>python manage.py makemigrations api1

保存後、コマンドプロンプト上で上記のコマンドを入力し、Enterキーを押します。マイグレーションファイル(model.pyの内容をデータベースに反映させるための中間ファイル)を作成します。

Migrations for 'api1':
api1\migrations
Migrations for 'api1':
api1\migrations\0001_initial.py
- Create model test_api
01_initial.py - Create model test_api

Enterキーを押すと、上記のように出力されます。

(.venv) C:\Users\user_\django_api\test_api1>python manage.py migrate

出力後、上記のコマンドを入力し、Enterキーを押します。マイグレーションファイルをデータベースに適用させます。

Operations to perform:
  Apply all migrations: admin, api1, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying api1.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

Enterキーを押すと、上記のようなメッセージが出力され、適用が完了となります。

■スーパーユーザーの作成

適用後、管理ページにログインするために、スーパーユーザーの作成を行います。

(.venv) C:\Users\user_\django_api\test_api1>python manage.py createsuperuser

行うために、上記のコマンドを入力し、Enterキーを押します。

Username (leave blank to use 'user_'): admin
Email address:
Password:
Password (again):

Enterキーを押すと、上記のUsernameやEmail address、passwordのプロンプトが表示されますので、Usernameなどを入力します。今回は「admin」というUsernameでEmail addressはEnterキーを押し未入力のまま作成を行っています。スーパーユーザーの作成が完了すると、「Superuser created successfully.」と出力されます。

■アプリの実行と検証

スーパーユーザーの作成が完了となりましたので、開発サーバーを実行し、アプリを実行してみます。

(.venv) C:\Users\user_\django_api\test_api1>python manage.py runserver

実行するために、上記のコマンドを入力し、Enterキーを押します。

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
July 25, 2022 - 14:16:22
Django version 4.0.6, using settings 'test_api1.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Enterキーを押すと、development server(開発サーバー)の実行が開始されますので、Webブラウザを起動し、アドレスバーに「http://127.0.0.1:8000/admin/」と入力し、アクセスします。

アクセスすると「Log in | Django site admin」というDjango siteの管理ページのログインページが表示されますので、ページ内の「Django administration」に、スーパーユーザー作成時に入力したUsernameとPasswordを入力し、「Log in」ボタンをクリックします。

クリックすると、管理ページへのログインが完了します。完了後、管理ページを確認すると、作成したモデル(test_api)が表示されていることが確認できました。

またモデルに登録するデータの入力フォームも表示することを確認できました。

コメント

タイトルとURLをコピーしました