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\migrationsMigrations for 'api1': api1\migrations\0001_initial.py - Create model test_api01_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)が表示されていることが確認できました。
またモデルに登録するデータの入力フォームも表示することを確認できました。
コメント