スポンサーリンク

【Django】Bootstrapでボタンやフォームをきれいに見せる【ブログアプリ】

スポンサーリンク
スポンサーリンク
この記事は約8分で読めます。

Bootstrapでボタンやフォームをきれいに見せる

 

はじめに

前回までで、必要最低限の機能を備えたブログアプリの作成が完了した。

このままでもブログとして使い始めることはできるが、ここから見た目や機能などを追加したい時に記事としてまとめていく。

 

今回はPythonやDjangoの機能について新しい内容はなく、HTMLとCSSとBootstrapの内容がほとんどになる。

 

BootstrapはCSSのフレームワークで、フォームやボタンなどがきれいに表示されるようにあらかじめ用意してくれている。

Djangoで作成したアプリケーションのhtmlファイル側で、Bootstrapに用意されているスタイルが適用された(きれいに装飾された)要素を呼び出してボタンやフォームがきれいに見えるようデザインしていく。

 

現在のディレクトリ構成は以下の通り

■ディレクトリ構成

 

ボタンやフォームをきれいに見せる手順

実際に各htmlファイルを編集してデザインを整える。

 

index.html

最初はトップページの見た目を変更する。

■変更前

 

■変更後

 

[1]BootStrapをインポート

インポートという表現が正しいかは置いておいて、Bootstrapはヘッダにlinkタグを使って1行記述するだけで使用することができる。

CDNという場所にBootstrapの情報が保存されているので、そこから情報を取得し、ボタンやフォームに対してスタイルの適用(つまり装飾)ができるようになる。

 

[2]ナビゲーションバーを作成

class属性に、navbarというクラスの中にあるnavbar-expand-lgを適用している。

navbar-expandは画面サイズによらずメニューを常に表示させる。

bg-darkはナビバーの背景色暗くする。

navbar-darkは見る限りではテキストを白系の明るい色にする。暗い城の背景色(bg-dark)と合わせて使用する。

class=”navbar navbar-expand-lg navbar-dark bg-dark”

 

[3]コンテナクラスの適用

コンテナはBootstrapが持つグリッドシステムの中で定義されているクラス。

class=”container”だけでも使用できるが、class=”container-fluid”を適用すると画面幅いっぱいまで表示される。今回の場合はナビバーが横幅いっぱいに表示される。

 

[4]ナビゲーションバーにトップページ、新規作成、一覧ページへのリンクを作成

class=”navbar-brand”はナビゲーションバー内のテキストを特別なスタイルで表示する。通常はロゴやサイト名を表示するために使われる。

 

 

 

create.html

■変更前

 

■変更後

[1]Bootstrapをインポート

 

[2]<p>タグで囲む

ここは最後に行った方が意味がわかりやすいはず。

pタグで囲むことで次の「タイトル」の入力欄との間に少し余白ができる。

今はこのトップページへのリンクと、タイトルの入力欄と、内容の入力欄が余白なしで縦に並んでいるため少し見づらくなっているので、それぞれに余白を持たせる。

 

[3]

・inputタグに以下を追記

class=”form-control form-control-sm”

inputタグの内部に追記した。これはBootstrapでフォームを装飾するための記述。sm(スモール)サイズのフォームとして画面上に表示させている。classは特定のタグ(今回はinputタグ)に対して名前を付けることができる。

Bootstrap側に”form-control”とさらにその中に”form-control-sm”が用意されており、私たちが作るWebアプリ側にこの名前を入力することでBootstrapのデザインを適用させることができる。

 

・pタグで囲む

[2]と同様に、pタグでかこむことで 内容の入力欄との間に余白を持たせる。

 

・divタグで囲み、以下を追記

<div class=”container-md”>・・・</div>

divタグは要素をグルーピングするためのタグ。要素の大きさ、配置、余白、デザインなどをまとめて適用させたい時に使う。

今回は、pタグとinputタグをdivタグで囲んでグルーピングしており、コンテナとしてのスタイルを適用させる。

class=”container-md”はBootstrapで用意されているコンテナクラスの内、md(ミドルサイズ)のコンテナを適用させている。

 

[4]

・textareaタグに以下追記

class=”form-control form-control-sm”

 

・pタグで囲む

・divタグで囲み、以下を追記

 class=”container-fluid”

divタグとclassについては上述の内容と同じ。class属性を付与してBootstrap側で定義しているスタイルを適用し、divタグで囲んでpタグとtextareaタグをグルーピング。

container-fluidを指定してtextareaタグをコンテナの中に入れている。fluidはビューポート(画面幅)に合わせて横幅を自動で決めてくれる。

 

[5]divタグで囲み、以下を追記

class=”btn btn-primary”

Bootstrap側のbtnクラスとさらにその中にあるbtn-primaryというクラスを適用している。

 

以下はBootstrap適用後の新規作成画面。

Bootstrap適用後の新規作成画面

 

 

page_list.html

 

■変更前

 

■変更後

 

[1]Bootstrapをインポート

[2]pタグを追記

[3]tableタグ、theadタグ、tbodyタグを追記予定

・tableタグ

画面上に表を作成するためのタグ。tableタグで囲われた部分に見出しなどをさらに追記していく。見出しや実際のデータはこの後に続くタグで作っていく。

・theadタグ

表の見出しをグループ化するためのタグ

・trタグ

trタグは表の中で行を定義するためのタグ。この中にthタグやtdタグを記述すると横一列に並び、thタグやtdタグの数だけ列が出来上がる。

・thタグ

表のヘッダセル(見出し)を定義すrためのタグ。

このタグで囲んだ文字が実際に表の見出しとして表示される。

[4]

・tbodyタグ

表の本体をグループ化するためのタグ。

trタグを囲み、さらにtrタグの中で次のtdタグを囲うことで実際の表データを記述する。

・ulタグからtrタグに変更

変更前はulタグを記述していた。ulタグは順序なしリストを作成するためのタグだが、今回は表にするのでulタグは外した。

この後、ulタグで囲んでいたliタグもtdタグに書き換えていくことになる。

 

・liタグをtdタグに変更

tdタグは表のデータセル(実際のデータ)を定義するためのタグ。

ulタグによって囲われたliタグがあることで順序のないリストとして表示されていたが、tbodyタグに囲われたtrタグに囲われたtdタグで囲むことで表のデータとして表示することができる。

 

[5]ボタンをグループ化してBootstrapのクラスを適用

Bootstrapにはbtn-groupがある。これはclass=”btn-group”と記述することで、複数のボタンが横一列に密着して表示されるような表示となる。

roleとaria-labelはアクセシビリティを向上させるためのHTMLタグ。

role属性は要素がどのような役割を持つかを示す。ブラウザなどのユーザーエージェントに対してその目的や機能を伝えることに役立つ。

aria-labelは要素に対してテキストでの説明(ラベル)を提供する。スクリーンリーダーなど画面に記述されている内容を読み上げる機能などが、このaria-labelに記載されているラベルを読み上げる。

 

以下はBootstrap適用後の一覧画面

Bootstrap適用後の一覧画面

 

 

 

 

まとめ

Django記事一覧

前回:【Django】削除機能を加える【ブログアプリ】

次回:

 

Django記事一覧

 

 

 

参考

はじめに · Bootstrap v5.3 (getbootstrap.jp)

フォームコントロール · Bootstrap v5.3 (getbootstrap.jp)

ボタン · Bootstrap v5.3 (getbootstrap.jp)

コンテナ · Bootstrap v5.3 (getbootstrap.jp)

コメント