簡易書籍アプリケーション作成(CRUD版)
6.5 簡易書籍アプリケーション作成(CRUD版)
6.5.1 アプリケーション概要
アプリケーション作成の目的
書籍管理システムをもとに、CRUDを利用した簡単なデータベースアクセス方法を学習していきます。
簡易ログインアプリケーション(Template版)プロジェクト構成(完成状態)

6.5.2 View(views.py)の編集
「bmsdjango」ディレクトリ直下の「views.py」にソースコードの記述
「views.py」に以下に示すソースコードを記述する。
■ソースコード
【ファイル名:bmsdjango/views.py】

6.5.3 テンプレートファイルの作成
- 「bmsdjango /templates」フォルダ内に「insert.html」、「update.html」を作成
- 既存の「list.html」、作成した「insert.html」ファイル、「update.html」ファイルに以下に示すソースコードを記述する。
■ソースコード
【ファイル名:list.html】

■ソースコード
【ファイル名:insert.html】
1 | {%load static%} |
2 | <!DOCTYPE html> |
3 | < html > |
4 | < head > |
5 | < meta charset = "UTF-8" > |
6 | < title >書籍登録</ title > |
7 | < link rel = "stylesheet" type = "text/css" href = "{% static 'style.css' %}" /> |
8 | </ head > |
9 | < body > |
10 | <!-- ブラウザ全体 --> |
11 | < div id = "wrap" > |
12 |
13 | <!--ヘッダー部分--> |
14 | < header > |
15 | < div class = "container" > |
16 | < h1 >書籍管理システムSpring版 Ver.1.0{{test}}</ h1 > |
17 | </ div > |
18 | </ header > |
19 |
20 | <!-- メニュー部分 --> |
21 | < div id = "menu" > |
22 | < div class = "container" > |
23 | <!-- ナビゲーション --> |
24 | < div id = "nav" > |
25 | < ul > |
26 | < li >< a href = "./" >[メニュー]</ a ></ li > |
27 | < li >< a href = "{% url 'insert' %}" >[書籍登録]</ a ></ li > |
28 | < li >< a href = "{% url 'list' %}" >[書籍一覧]</ a ></ li > |
29 | </ ul > |
30 | </ div > |
31 |
32 | <!-- ページタイトル --> |
33 | < div id = "page_title" > |
34 | < h2 >書籍登録</ h2 > |
35 | </ div > |
36 | </ div > |
37 | </ div > |
38 |
39 | <!-- 書籍一覧のコンテンツ部分 --> |
40 | < div id = "main" class = "container" > |
41 | <!--入力フォーム --> |
42 | < form action = "{% url 'insert' %}" method = "POST" > |
43 | {% csrf_token %} |
44 | < table class = "input-table" align = "center" > |
45 | < tr > |
46 | < th >ISBN</ th > |
47 | < td > |
48 | < input type = "text" name = "isbn" > |
49 | </ td > |
50 | </ tr > |
51 | < tr > |
52 | < th >TITLE</ th > |
53 | < td > |
54 | < input type = "text" name = "title" > |
55 | </ td > |
56 | </ tr > |
57 | < tr > |
58 | < th >価格</ th > |
59 | < td > |
60 | < input type = "text" name = "price" > |
61 | </ td > |
62 | </ tr > |
63 | </ table > |
64 | < input type = "submit" value = "登録" > |
65 | </ form > |
66 | </ div > |
67 |
68 | <!-- フッター部分 --> |
69 | < footer > |
70 | < div class = "container" > |
71 | < h4 >Copyright© 2018 All Right Reserved.</ h4 > |
72 | </ div > |
73 | </ footer > |
74 |
75 | </ div > |
76 | </ body > |
77 | </ html > |
■ソースコード
【ファイル名:update.html】
1 | {%load static%} |
2 | <!DOCTYPE html> |
3 | < html > |
4 | < head > |
5 | < meta charset = "UTF-8" > |
6 | < title >書籍変更</ title > |
7 | < link rel = "stylesheet" type = "text/css" href = "{% static 'style.css' %}" /> |
8 | </ head > |
9 | < body > |
10 | <!-- ブラウザ全体 --> |
11 | < div id = "wrap" > |
12 |
13 | <!--ヘッダー部分--> |
14 | < header > |
15 | < div class = "container" > |
16 | < h1 >書籍管理システムSpring版 Ver.1.0</ h1 > |
17 | </ div > |
18 | </ header > |
19 |
20 | <!-- メニュー部分 --> |
21 | < div id = "menu" > |
22 | < div class = "container" > |
23 | <!-- ナビゲーション --> |
24 | < div id = "nav" > |
25 | < ul > |
26 | < li >< a href = "./" >[メニュー]</ a ></ li > |
27 | < li >< a href = "{% url 'insert' %}" >[書籍登録]</ a ></ li > |
28 | < li >< a href = "{% url 'list' %}" >[書籍一覧]</ a ></ li > |
29 | </ ul > |
30 | </ div > |
31 |
32 | <!-- ページタイトル --> |
33 | < div id = "page_title" > |
34 | < h2 >書籍変更</ h2 > |
35 | </ div > |
36 | </ div > |
37 | </ div > |
38 |
39 | <!-- 書籍一覧のコンテンツ部分 --> |
40 | < div id = "main" class = "container" > |
41 |
42 | <!-- 入力フォーム --> |
43 | < form action = "{% url 'update' book.isbn %}" method = "POST" > |
44 | {% csrf_token %} |
45 | < table class = "detail-table" > |
46 | < thead > |
47 | < tr > |
48 | < td ></ td > |
49 | < th ><<変更前情報>></ th > |
50 | < th ><<変更後情報>></ th > |
51 | </ tr > |
52 | </ thead > |
53 | < tbody > |
54 | < tr > |
55 | < th >ISBN</ th > |
56 | < td >{{book.isbn}}</ td > |
57 | < td >{{book.isbn}}</ td > |
58 | </ tr > |
59 | < tr > |
60 | < th >TITLE</ th > |
61 | < td >{{book.title}}</ td > |
62 | < td >< input type = "text" name = "title" ></ td > |
63 | </ tr > |
64 | < tr > |
65 | < th >価格</ th > |
66 | < td >{{book.price}}</ td > |
67 | < td >< input type = "text" name = "price" ></ td > |
68 | </ tr > |
69 | </ tbody > |
70 | </ table > |
71 | < input type = "hidden" name = "isbn" value = "{{book.isbn}}" > |
72 | < input type = "submit" value = "変更" > |
73 | </ form > |
74 |
75 | </ div > |
76 |
77 | <!-- フッター部分 --> |
78 | < footer > |
79 | < div class = "container" > |
80 | < h4 >Copyright© 2018 All Right Reserved.</ h4 > |
81 | </ div > |
82 | </ footer > |
83 | </ div > |
84 |
85 | </ body > |
86 | </ html > |
6.5.4 urls.pyの作成、編集
bmsdjangoプロジェクト直下に作成した「urls.py」に以下に示すソースコードを記述する。
■ソースコード
【ファイル名:bmsdjango/urls.py】
1 | from django.urls import path |
2 | from . import views |
3 |
4 | urlpatterns = [ |
5 | path( 'list' , views.listView, name = 'list' ), |
6 | path( 'insert' , views.insert, name = 'insert' ), |
7 | path( 'update/<str:isbn>' , views.update, name = 'update' ), |
8 | path( 'delete' , views.delete, name = 'delete' ), |
9 | ] |
6.5.5 アプリケーションの実行
- ターミナルで簡易サーバーを起動する
- アプリケーションにアクセス(書籍一覧画面)
以下のアドレスから簡易書籍一覧表示アプリケーションにアクセスします。
URL:http://localhost:8000/bmsdjango/list

図 6.5 1:アプリケーションアクセス画面(書籍一覧画面)
続いて[書籍登録]をクリックします。

図 6.5 2:アプリケーションアクセス画面(書籍登録画面)
ISBNに「0005」、TITLEに「Python」、価格「3000」を入力し「登録」をクリックします。すると一覧画面に戻るので、今度はPythonの行の変更ボタンをクリックします。

図 6.5 3:アプリケーションアクセス画面(書籍一覧画面)
すると「http://localhost:8000/bmsdjango/update/0005」のURLに移動し、変更(更新)画面が表示されますので、Titleに「Django」、Priceに「4000」を入力し「変更」をクリックしてください。

図 6.5 4:アプリケーションアクセス画面(書籍変更画面)
再び一覧画面が表示されるので、値が変更されたかどうか確認してください。最後にDjangoの行の「削除」のボタンをクリックします。

図 6.5 5:アプリケーションアクセス画面(書籍一覧画面)
すると再び一覧画面が表示されるのでDjangoの行が削除されていることを確認してください。

図 6.5 6:アプリケーションアクセス画面(書籍一覧画面)