Django Python 会議室予約システム

Djangoフレームワークを使った会議室予約システムの作成

Djangoフレームワークを使った会議室予約システムの作成

こんにちは、ともです。

今回はPythonのWebアプリケーション用のDjangoフレームワークを使って会議室予約システムの作成を行います。

PythonやDjangoのインストール、および、Djangoを使ったHelloWorldの表示については、本ブログの最後にリンクを記載します。

フロントのコーディングはこちらを参照してください。

Djangoフレームワークを使った会議室予約システムの作成(フロント)

会議室予約システムプロジェクト作成

最初にプロジェクトを作成します。

プロジェクトを作成する前に、開発するディレクトリを作成します。

今回は「C:\python_workspace\01_project」に作成します。

    
C:/
 ┗ python_workspace/
   ┗ 01_project/
    
  

Anaconda Prompt(anaconda3)をつかってプロジェクトを作成します。

WindowsのスタートからAnaconda Prompt(anaconda3)を起動します。

コマンドプロンプトをを起動して、ディレクトリを移動します。

    
cd C:\python_workspace\01_project
    
  

プロジェクト名は「website」とします。

以下のコマンドを入力します。

    
django-admin startproject website
    
  

コマンドを入力するとディレクトリが作成されます。

ディレクトリが作成されたか確認します。

dirコマンドを入力します。

    
dir
    
  

以下のようなwebsiteが表示されていたら成功です。

    
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は 96BD-721F です

 C:\python_workspace\01_project のディレクトリ

2022/06/16  20:19    <DIR>          .
2022/06/16  20:19    <DIR>          ..
2022/06/16  20:19    <DIR>          website
               0 個のファイル                   0 バイト
               3 個のディレクトリ  217,713,074,176 バイトの空き領域
    
  

会議室予約システムWebアプリ作成

プロジェクトを作成後にアプリを作成します。

会議システム予約システム用のWebアプリを作成するために、manage.py と同じディレクトリに入って、このコマンドを実行します。

アプリ名はmrrs(Meeting room reservation systemの略)です。

Anaconda Prompt(anaconda3)からプロジェクト配下に移動します。

    
cd C:\python_workspace\01_project\website
    
  
    
C:/
 ┗ python_workspace/
   ┗ 01_project/
     ┗ website/
    
  

以下のコマンドを入力しアプリを作成します。

    
python manage.py startapp mrrs
    
  

コマンドを入力すると、以下のフォルダが作成されます。

    
C:/
 ┗ python_workspace/
   ┗ 01_project/
     ┗ website/
       ┣ mrrs/
       ┃ ┣ __init__.py
       ┃ ┣ admin.py
       ┃ ┣ apps.py
       ┃ ┣ migrations/
       ┃ ┃  ┗ __init__.py
       ┃ ┣ models.py
       ┃ ┣ tests.py
       ┃ ┣ urls.py
       ┃ ┗ views.py
       ┣ manage.py
       ┗ website/
    
  

website配下のwebsiteディレクトリは、プロジェクト作成時に作成されます。

website/urls.pyコーディング

website/website/urls.pyを改修します。

website/website/urls.pyは、プロジェクトのURLを管理するファイルです。このファイルに、アプリが利用するパスをファイル単位で設定します。

website/website/urls.pyにmrrsのurlパラメータパスと参照先urlsを入力します。

    
from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url

urlpatterns = [
    path('admin/', admin.site.urls),
    path('mrrs/', include('mrrs.urls')),
]
    
  

mrrs/urls.pyコーディング

website/mrrs/urls.pyに以下のコードを入力します。mrrs/urls.pyは自動で作成されないため手動で作成して下さい。

    
from django.conf.urls import url
from . import views

urlpatterns = [
    url('^$', views.mrrs, name='mrrs'),
]
    
  

mrrs/views.pyコーディング

urlを設定した後はviewを改修します。

website/mrrs/views.pyコードを修正します。このファイルは、mrrsアプリを作成した時に自動で作成されます。

    
from django.http.response import HttpResponse

def mrrs(request):
    return HttpResponse('会議室予約システム')
    
  

セーブポイント(URL確認)

いきなり全部作成するのは怖いのでこの時点で一度サーバーを起動して「会議室予約システム」の文言を表示します。

Anaconda Prompt(anaconda3)から以下のコマンドを入力します。

    
python manage.py runserver
    
  

サーバーを起動した後以下のURLを入力します。

http://127.0.0.1:8000/mrrs/

会議室予約システムの文言が表記されます。

データーベース設定

予約情報を登録するためにデーターベースを使用します。

使用するデーターベースは、db.sqlite3を使用します。

作成するテーブルは以下の項目を作成します。

テーブル名は、「room_reservation」です。

  • 会議室予約ID
  • 会議室ID
  • 利用者
  • 開始日時
  • 終了日時
  • 削除フラグ

mrrs/models.pyコーディング

データモデルのコーディングを行います。

データモデルは上記で作成した「room_reservation」のテーブルの内容を反映します。

    
from django.db import models
from django.utils import timezone

class room_reservation (models.Model):
    """
    room_reservationテーブルのモデル.

    """
    # id : INTEGER型で、主キー
    id = models.IntegerField(primary_key=True)
    # 会議室ID : INTEGER型
    room_id = models.IntegerField()
    # 利用者 : 文字列型30桁
    user = models.CharField(max_length=30)
    # 開始日時 : DATETIME型
    start_date_time = models.DateTimeField(default=timezone.now)
    # 終了日時 : DATETIME型
    end_date_time = models.DateTimeField(default=timezone.now)
    # 削除フラグ : INTEGER型
    del_flg = models.IntegerField()
    
  

website/settings.pyコーディング

website/settings.pyにアプリケーションコンフィグの設定を行います。

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

'mrrs.apps.MrrsConfig',を入力します。

テーブル作成

テーブルを作成します。以下のコマンドを入力します。

Anaconda Prompt(anaconda3)から以下のコマンドを入力します。

    
python manage.py makemigrations mrrs
    
  

入力すると以下の内容が表示されます。

    
Migrations for 'mrrs':
  mrrs\migrations\0001_initial.py
    - Create model room_reservation
    
  

sqlmigrateを実行します。

    
python manage.py sqlmigrate mrrs 0001
    
  

入力すると以下の内容が表示されます。

    
BEGIN;
--
-- Create model room_reservation
--
CREATE TABLE "mrrs_room_reservation" 
(
  "id" integer NOT NULL PRIMARY KEY, 
  "room_id" integer NOT NULL, 
  "user" varchar(30) NOT NULL, 
  "start_date_time" datetime NOT NULL, 
  "end_date_time" datetime NOT NULL, 
  "del_flg" integer NOT NULL
);
COMMIT;
    
  

migrateを実行します。

テーブルを反映します。以下のコマンドを入力します。

    
python manage.py migrate
    
  

入力すると以下の内容が表示されます。

    
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, mrrs, sessions
Running migrations:
  Applying mrrs.0001_initial... OK
    
  

画面作成

会議室の入力内容をデーターベースに登録しその結果を画面に表示します。

mrrs/forms.pyコーディング

入力フォームのクラスを作成します。今回は全てテキスト入力とします。

    
from django import forms

class reserv_room(forms.Form):
    """
    reserv_roomのフォーム.

    """
    # 予約ID
    reserve_id = forms.CharField(
        label = 'ID',
        max_length = 20,
        required = True,
        widget = forms.TextInput()
    )
    # 会議室ID
    room_id = forms.CharField(
        label = '会議室ID',
        max_length = 20,
        required = True,
        widget = forms.TextInput()
    )
    # 利用者
    reserve_name = forms.CharField(
        label = '利用者',
        max_length = 20,
        required = True,
        widget = forms.TextInput()
    )
    # 開始日時
    start_date_time = forms.CharField(
        label = '開始日時',
        max_length = 20,
        required = True,
        widget = forms.TextInput()
    )
    # 終了日時
    end_date_time = forms.CharField(
        label = '終了日時',
        max_length = 20,
        required = True,
        widget = forms.TextInput()
    )
    
  

mrrs/views.pyコーディング

最初に作成したviewsを以下の内容で上書きします。

    
from django.http.response import HttpResponse
from django.shortcuts import render
from .models import room_reservation
from . import forms
def mrrs(request):
    """
    会議室予約システム画面の関数
    """
    # リクエストがPOST形式の場合 データーベースに会議室予約システムの情報を登録する.
    if request.method == "POST":
        # 予約ID
        reserve_id = request.POST.get('reserve_id')
        # 会議室ID
        room_id = request.POST.get('room_id')
        # 利用者
        reserve_name = request.POST.get('reserve_name')
        # 開始日時
        start_date_time = request.POST.get('start_date_time')
        # 終了日時
        end_date_time = request.POST.get('end_date_time')  
        # リクエストパラメーターをデーターモデルに当て込みます.
        data_object = room_reservation(
            id=reserve_id, 
            room_id=room_id, 
            user=reserve_name, 
            start_date_time=start_date_time, 
            end_date_time=end_date_time, 
            del_flg=0)
        # データーを登録する.
        data_object.save()
    # データーモデルからデーターを取得する.
    reserv_data = room_reservation.objects.all()
    # フォームオブジェクトを取得する.
    form = forms.reserv_room(request.GET or None)
    # テンプレートに渡す値を設定する
    display = {
        'form': form,
        'reserve_data' : reserv_data,
    }
    return render(request, 'resurve.html', display)
    
  

templates/resurv.htmlコーディング

website配下のsetting.pyを修正しテンプレートディレクトリを読めるようにします。。

先頭に os importを追加しておいてください。

    
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'mrrs/templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
    
  

テンプレートファイルを作成します。

    
<!DOCTYPE html>
  <html>
    <head lang="ja">
      <meta charset="utf-8">
      <title>会議室予約システム</title>
    </head>
    <body>
      <h1>会議室予約システム</h1>
      <!-- 入力フォームと送信ボタンは formタグで囲み postメソッドで送信する -->
      <form action="" method="POST">
        <!--POSTを行う際に必要 -->
        {% csrf_token %}
        <div style='margin:0 auto; width:1000px;'>
          <!--予約ID-->
          <label>{{ form.reserve_id.label }} {{ form.reserve_id }}</label><br/>
          <!--会議室ID-->
          <label>{{ form.room_id.label }} {{ form.room_id }}</label><br/>
          <!--利用者-->
          <label>{{ form.reserve_name.label }} {{ form.reserve_name }}</label><br/>
          <!--開始日時-->
          <label>{{ form.start_date_time.label }} {{ form.start_date_time }}</label><br/>
          <!--終了日時-->
          <label>{{ form.end_date_time.label }} {{ form.end_date_time }}</label><br/>
          <br />
          <input type="submit" value="送信">

          {% for reserve in reserve_data %}
            <ul>
            <!--予約ID-->
            <li>{{reserve.id}}</li>
            <!--会議室ID-->
            <li>{{reserve.room_id}}</li>
            <!--利用者-->
            <li>{{reserve.user}}</li>
            <!--開始日時-->
            <li>{{reserve.start_date_time}}</p>
            <!--終了日時-->
            <li>{{reserve.end_date_time}}</p>
          </ul>
          {% endfor %}

          <br/>
          <br/>
        </div>
      </form>
    </body>
  </html>
    
  

まとめ

サーバーを起動して会議室予約システムの画面を表示します。

表示後値を入力して送信ボタンを押下します。

    
python manage.py runserver
    
  

以下のURLを入力します。

http://127.0.0.1:8000/mrrs/

会議室予約システム

大枠のベースは作成しました。入力チェックや画面デザインはこれから作っていく予定です。

Pythonのインストールは以下を参照してください。

WindowsにAnacondaでPythonをインストール

以下はDjangoの基本について紹介しています。

Djangoを使ってHello Worldを表示する

以下はDjangoのテンプレートについて紹介しています。

Djangoのテンプレートを使ってみる

以下はDjangoのFormの使い方について紹介しています。

DjangoでFormを用いた値のやり取り

コメント

0 件のコメント:

コメントを投稿

コメントをお待ちしています。