Djangoでwebアプリの作成(バックエンド編)

スポンサーリンク
Djangoでwebアプリの作成(バックエンド編)Django

この記事ではDjango公式チュートリアルに沿った内容で使い方を解説していきます。

今回はDjangoでバックエンドを構築する手順です。

 

プロジェクトの作成

Djangoを使い始めるために、まずはプロジェクトの作成を行います。

プロジェクトを作りたい場所に移動して、startprojectのコマンドを実行します。

django-admin startproject mysite

 

mysiteプロジェクトの作成を行うとmysite配下にファイルが作成されます。

mysite/ # プロジェクトのディレクトリ
   ├ manage.pymysite/__init__.py 
      ├ settings.py # プロジェクト全体の設定
      ├ urls.py # プロジェクト全体のルーティング設定
      ├ asgi.py 
      ├ wsgi.py

 

Webサーバの起動

Djangoが正常に動作するか確認していきます。

 

接続ホストの許可設定

そのままDjangoサーバを起動しただけではクライアントからアクセスできないので、接続ホストの許可設定を行います。

mysite/settings.pyに以下の変更をします。

mysite/settings.py
#ALLOWED_HOSTS = []
ALLOWED_HOSTS = ['*']

 

これでクライアント端末からアクセスすることができるようになりました。

 

Djangoの起動

Djangoを起動します。

python3 manage.py runserver 0:8000

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

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 09, 2021 - 02:51:02
Django version 3.2.8, using settings 'mysite.settings'
Starting development server at http://0:8000/
Quit the server with CONTROL-C.

 

コマンドのオプションにつけた0:8000は、すべてのサーバから8000番ポートへのアクセスを許可していることを表しています。

0 は0.0.0.0のショートカットです。

 

サーバ側の準備は完了したので、クライアントのブラウザからアクセスしてみましょう。

 

ブラウザでDjangoサーバの8000番ポートにアクセスするとロケットが表示されます。

Djangoへの接続成功

 

アプリケーションの作成

次に、アプリケーションの作成を行います。

 

pollsアプリケーションの作成

ここでは、pollsという名前でアプリケーションを作成しています。

python3 manage.py startapp polls

 

pollsアプリケーションの作成を行うとpolls配下にファイルが作成されます。

mysite/ # プロジェクトのディレクトリ
   ├ manage.py
mysite/ 
   ├ polls/
      ├ __init__.py
      ├ admin.py
      ├ apps.py
      ├ migrations/
      │   ├ __init__.py
      ├ models.py # DBの設定ファイル
      ├ tests.py # 試験の設定ファイル
      ├ views.py # アプリの動作設定ファイル

 

アプリケーションの登録

アプリケーションを使うためにプロジェクトに登録します。

プロジェクト全体の設定はmysite/settings.pyで設定します。

INSTALLED_APPSの中に、アプリケーションのコンフィグを追加すれば設定完了です。

 

mysite/settings.py(抜粋)
INSTALLED_APPS = [
    'polls.apps.PollsConfig',
		:
]

 

DBの作成

webアプリで使うデータベースを作成していきます。

 

DBの設定

まず、利用するDBの指定をします。

デフォルトではSQLiteを使うようになっているので、今回はそのまま利用していきます。

DBの指定はmysite/settings.pyで行います。

mysite/settings.py(抜粋)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

 

今回はデフォルトのまま変更はありません

 

DBのテーブルを定義

DBテーブルの構造を定義していきます。

DBの定義はpolls/models.pyで行います。

polls/models.py
from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

 

ここではQuestionテーブルChoiceテーブルの2つを定義しています。

それぞれ以下のようなカラムを持ったテーブルです。

Questionテーブル
question_textpub_date

 

Choiceテーブル
questionchoice_text votes 

 

モデルフィールドの一覧はこちらのサイトにまとめられています。

 

DBに反映

マイグレーションして設定をDBに反映させます。

Djangoのマイグレーションは「マイグレーションファイルの作成」「マイグレーションを実施」の2段階で行います。

 

まず、マイグレーションファイルの作成コマンドです。

python3 manage.py makemigrations
Migrations for 'polls':
  polls/migrations/0001_initial.py
    - Create model Question
    - Create model Choice

 

マイグレーションファイルはpolls/migrations配下に「0001_initial.py」として生成されます。

mysite/ # プロジェクトのディレクトリ
   ├ manage.py
mysite/ 
   ├ polls/
      ├ migrations/
      │   ├ __init__.py
      │   ├ 0001_initial.py

 

マイグレーションファイルの内容をDBに反映させていきます。

python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, polls, 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 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 polls.0001_initial... OK
Applying sessions.0001_initial... OK

 

無事にDBに反映されました。

 

管理サイトの設定

DjangoではDBの状態をブラウザから確認することができます

DB管理のために必要な設定を行っていきましょう。

管理ユーザを作成

まず、管理サイトにログインできるユーザを作成します。

python3 manage.py createsuperuser
Username (leave blank to use 'ubuntu'): admin
Email address: admin@example.com
Password: 
Password (again): 
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

 

ユーザ作成コマンドを実行すると、ユーザ名・メールアドレス・パスワードの入力を求められるので入力します。

パスワードが単純すぎると警告が出ますが、yを入力するとそのまま登録することができます。

 

管理サイトにテーブルを登録する

管理サイトで管理するテーブルを登録します。

設定はpolls/admin.pyで行います。

polls/admin.py
from django.contrib import admin

from .models import Question,Choice

admin.site.register(Question)
admin.site.register(Choice)

 

 

管理サイトでDBを確認する

Djangoを起動して、ブラウザで「127.0.0.1:8000/admin」にアクセスしてみます。

python3 manage.py runserver 0:8000

 

ブラウザに接続すると管理サイトのログイン画面が表示されます。

Django管理ログイン画面

 

ここに作成したユーザ名とパスワードを入れてログインします。

ログインするとテーブルの情報が表示され、レコードの追加や削除を行うことができます

Django管理画面

 

これでDjangoアプリのデータを処理するバックエンド側を構築することができました。

 

まとめ

Djangoを使ってwebアプリのバックエンドを構築する方法を紹介しました。

プロジェクトの作成・アプリケーションの作成・DBの作成を行って必要な環境を整えることができました。

次回は画面表示などのフロントエンドについて紹介していきます。

 

参考文献

Django
The web framework for perfectionists with deadlines.

コメント

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