Djangoフレームワークを使った会議室予約システムの作成
こんにちは、ともです。
今回はPythonのWebアプリケーション用のDjangoフレームワークを使って会議室予約システムの作成を行います。
PythonやDjangoのインストール、および、Djangoを使ったHelloWorldの表示については、本ブログの最後にリンクを記載します。
フロントのコーディングはこちらを参照してください。
目次
会議室予約システムプロジェクト作成
最初にプロジェクトを作成します。
プロジェクトを作成する前に、開発するディレクトリを作成します。
今回は「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のインストールは以下を参照してください。
以下はDjangoの基本について紹介しています。
以下はDjangoのテンプレートについて紹介しています。
以下はDjangoのFormの使い方について紹介しています。
0 件のコメント:
コメントを投稿
コメントをお待ちしています。