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を入力します。

  1. from django.contrib import admin
  2. from django.urls import path
  3. from django.conf.urls import include, url
  4. urlpatterns = [
  5. path('admin/', admin.site.urls),
  6. path('mrrs/', include('mrrs.urls')),
  7. ]

mrrs/urls.pyコーディング

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

  1. from django.conf.urls import url
  2. from . import views
  3. urlpatterns = [
  4. url('^$', views.mrrs, name='mrrs'),
  5. ]

mrrs/views.pyコーディング

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

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

  1. from django.http.response import HttpResponse
  2. def mrrs(request):
  3. 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」のテーブルの内容を反映します。

  1. from django.db import models
  2. from django.utils import timezone
  3. class room_reservation (models.Model):
  4. """
  5. room_reservationテーブルのモデル.
  6. """
  7. # id : INTEGER型で、主キー
  8. id = models.IntegerField(primary_key=True)
  9. # 会議室ID : INTEGER型
  10. room_id = models.IntegerField()
  11. # 利用者 : 文字列型30桁
  12. user = models.CharField(max_length=30)
  13. # 開始日時 : DATETIME型
  14. start_date_time = models.DateTimeField(default=timezone.now)
  15. # 終了日時 : DATETIME型
  16. end_date_time = models.DateTimeField(default=timezone.now)
  17. # 削除フラグ : INTEGER型
  18. del_flg = models.IntegerField()

website/settings.pyコーディング

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

  1. INSTALLED_APPS = [
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'mrrs.apps.MrrsConfig',
  9. ]

'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コーディング

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

  1. from django import forms
  2. class reserv_room(forms.Form):
  3. """
  4. reserv_roomのフォーム.
  5. """
  6. # 予約ID
  7. reserve_id = forms.CharField(
  8. label = 'ID',
  9. max_length = 20,
  10. required = True,
  11. widget = forms.TextInput()
  12. )
  13. # 会議室ID
  14. room_id = forms.CharField(
  15. label = '会議室ID',
  16. max_length = 20,
  17. required = True,
  18. widget = forms.TextInput()
  19. )
  20. # 利用者
  21. reserve_name = forms.CharField(
  22. label = '利用者',
  23. max_length = 20,
  24. required = True,
  25. widget = forms.TextInput()
  26. )
  27. # 開始日時
  28. start_date_time = forms.CharField(
  29. label = '開始日時',
  30. max_length = 20,
  31. required = True,
  32. widget = forms.TextInput()
  33. )
  34. # 終了日時
  35. end_date_time = forms.CharField(
  36. label = '終了日時',
  37. max_length = 20,
  38. required = True,
  39. widget = forms.TextInput()
  40. )

mrrs/views.pyコーディング

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

  1. from django.http.response import HttpResponse
  2. from django.shortcuts import render
  3. from .models import room_reservation
  4. from . import forms
  5. def mrrs(request):
  6. """
  7. 会議室予約システム画面の関数
  8. """
  9. # リクエストがPOST形式の場合 データーベースに会議室予約システムの情報を登録する.
  10. if request.method == "POST":
  11. # 予約ID
  12. reserve_id = request.POST.get('reserve_id')
  13. # 会議室ID
  14. room_id = request.POST.get('room_id')
  15. # 利用者
  16. reserve_name = request.POST.get('reserve_name')
  17. # 開始日時
  18. start_date_time = request.POST.get('start_date_time')
  19. # 終了日時
  20. end_date_time = request.POST.get('end_date_time')
  21. # リクエストパラメーターをデーターモデルに当て込みます.
  22. data_object = room_reservation(
  23. id=reserve_id,
  24. room_id=room_id,
  25. user=reserve_name,
  26. start_date_time=start_date_time,
  27. end_date_time=end_date_time,
  28. del_flg=0)
  29. # データーを登録する.
  30. data_object.save()
  31. # データーモデルからデーターを取得する.
  32. reserv_data = room_reservation.objects.all()
  33. # フォームオブジェクトを取得する.
  34. form = forms.reserv_room(request.GET or None)
  35. # テンプレートに渡す値を設定する
  36. display = {
  37. 'form': form,
  38. 'reserve_data' : reserv_data,
  39. }
  40. 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',
            ],
        },
    },
]
    
  

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

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="ja">
  4. <meta charset="utf-8">
  5. <title>会議室予約システム</title>
  6. </head>
  7. <body>
  8. <h1>会議室予約システム</h1>
  9. <!-- 入力フォームと送信ボタンは formタグで囲み postメソッドで送信する -->
  10. <form action="" method="POST">
  11. <!--POSTを行う際に必要 -->
  12. {% csrf_token %}
  13. <div style='margin:0 auto; width:1000px;'>
  14. <!--予約ID-->
  15. <label>{{ form.reserve_id.label }} {{ form.reserve_id }}</label><br/>
  16. <!--会議室ID-->
  17. <label>{{ form.room_id.label }} {{ form.room_id }}</label><br/>
  18. <!--利用者-->
  19. <label>{{ form.reserve_name.label }} {{ form.reserve_name }}</label><br/>
  20. <!--開始日時-->
  21. <label>{{ form.start_date_time.label }} {{ form.start_date_time }}</label><br/>
  22. <!--終了日時-->
  23. <label>{{ form.end_date_time.label }} {{ form.end_date_time }}</label><br/>
  24. <br />
  25. <input type="submit" value="送信">
  26. {% for reserve in reserve_data %}
  27. <ul>
  28. <!--予約ID-->
  29. <li>{{reserve.id}}</li>
  30. <!--会議室ID-->
  31. <li>{{reserve.room_id}}</li>
  32. <!--利用者-->
  33. <li>{{reserve.user}}</li>
  34. <!--開始日時-->
  35. <li>{{reserve.start_date_time}}</p>
  36. <!--終了日時-->
  37. <li>{{reserve.end_date_time}}</p>
  38. </ul>
  39. {% endfor %}
  40. <br/>
  41. <br/>
  42. </div>
  43. </form>
  44. </body>
  45. </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 件のコメント:

コメントを投稿

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