見出し画像

Python+DjangoでSNSを作る~Day5 CSSと画像でサイトの見た目を整える

はじめに

CSSはカスケード・スタイル・シート(cascade style sheets)といい、HTML等で記述された要素をデザインする目的で使います。

HTMLのみだと、前回までに見せてきたサイトのように恐ろしく無骨な出来上がりとなります。

画像1

ここに、CSSやら画像を入れると・・・

画像2

こんな感じになります。

Djangoのメリットは、フレームワークを使って、より簡易にWebアプリケーションが作成できることです。

CSSも一から自分で、スタイルシートを作成する方法がありますし、色々なCSSでの装飾の仕方を解説している親切なサイトがあります。

が、今回はBootstarp4という超便利な機能を使って実装する方法や、画像をページに表示させる方法を簡単に解説していきます。

1. staticフォルダを作成する

まずは、前回まで作成してきたフォルダにstaticフォルダを作成します。場所は、プロジェクトフォルダのプロジェクトフォルダ・アプリケーションフォルダと同じ階層です。

画像3

2. Bootstrap4をダウンロードする

Bootstrap4のサイトにアクセスします。

なお、ページに記載されているとおり、ダウンロードせずとも外部リンクをHTML内に記述するだけで利用は可能です。

今回はstaticフォルダに、画像やスタイルシート等の静的ファイルを保存し、Djangoでそれを読み込ませる方法を解説するためダウンロードするものです。

ダウンロードページの以下から、ダウンロードをします。

画像4

ダウンロードが完了したら、cssフォルダ内のbootstrap.cssファイルをコピーします。

画像5

staticフォルダ配下にcssフォルダを作成し、bootstrap.cssファイルを格納します。

画像6

3. Bootstrap4でナビゲーションバーを作ってみる

早速試してみましょう。Bootstrap4のサイトには、色々な利用方法・具体的な記述方法が記載されています。

例えば、前回CSSでナビゲーションバー的なものをページ上部に作りましたが、これをBootstrap4を使って簡単に作りたいと思います。

画像7

シャレオツに、右揃えのナビゲーションバーにしてみましょう。
記載されているコードをまずはCopyしちゃいます。

画像8

これを前回作成したbase.htmlに一旦、貼り付けます。
まずは前回記述したナビゲーションバーの下にそのまま入れちゃいます。

画像9

では、サーバー起動して、表示を見てみましょう。
こ、これは・・・

画像10

これだけでは、ダメなのです。
settings.pyファイルにstaticフォルダの場所を記述し、htmlファイル上でstaticファイルを読み込む必要があります。

4. cssファイルをスタイルシートとして読み込んで利用する

まずは、settings.pyファイルに追記をします。

・settings.py

画像12

pathlibというライブラリのjoinpathというメソッドで、BASE_DIR(manage.pyファイルがある場所)のstaticというフォルダが、静的ファイルの格納場所です!と書いています。

なお、コメントアウトしている、os.path.join(BASE_DIR, 'static')という書き方をする場合は、osライブラリを別途importする必要があります。

次にhtmlファイルでstaticフォルダ配下のcssフォルダに格納した、bootstarpのcssファイルを読み込むようにします。

・base.htmlファイル

base.htmlファイルに以下のように記述することで、cssファイルを読み込むようにします。

画像12

ポイントは先頭に書いたテンプレートタグ{% load static %}と、<link rel="stylesheet" href="{% static 'css/bootstarp.css' %}"です。

{% load static %}で静的ファイルを取込み。
<link rel ・・・ という記述は、stylesheet(cssファイル)として、staticフォルダ配下のcssフォルダにある、bootstarp.cssというファイルを使いますよという意味です。

あとは、bootstrap4のサイトからコピーしたHTMLのリンク情報とリンク名を書き換えます。
(一応、もともと書いていたCSSとHTMLはコメントアウトして残しておきました)

画像13

画像14

HTMLファイルの場合は、<!-- と -->で囲まれた範囲がコメント扱いされます。

bootstarp4のnavbarのhref属性をDjangoのテンプレートタグ{% url 'urls.pyファイルに記述したname' %}に書き換えてます。

これで、再度サーバー起動し、ページを表示してみましょう。

画像15

ちゃんと出ましたね。

なお、Bootstrap4内のドキュメントを読みながら、これやってみようかなーってのを拾ってクラス属性とかに書くだけで見た目が変わってきますので、CSS分からなくてもラクチンです。

5. 画像を表示する

次に画像を表示してみましょう。

作成したstaticフォルダに、imageというフォルダをきって、画像ファイルを格納していきます。

画像16

なお、イイ感じの画像を使いたいなら、僕はCanvaで無料素材を拝借してます。

今回はCanvaでササっと作成した画像を使っていきます。

まずは、ログインページ。

・login.html

画像18

2行目にある

{% load static %}

このテンプレートタグでstaticフォルダを読み込んでます。

そして、{% block content %}タグの下にある以下の記載で画像を配置してます。

<img src="{% static 'image/agecalculate.png' %}" class="d-block mx-auto">

なお、class属性として記載しているd-block mx-autoで画像をセンタリング(中央に表示)しています。

また、imgタグ以下のdivタグでは、それ以下の要素を中央300ピクセルの位置に表示してね、ということを記載しています。

divタグというのは、複数のタグにまとめてCSSを摘要させたい時に、divでくくってclassやidで属性値を設定して、その属性値を指定してCSSでデザインを記載する時に使います。

では、残りの頁にも画像を表示して、中央寄せして表示を整えましょう。

・index.html

画像18

・agecalculate.html

画像19

では、画面を遷移させてみてみましょう。

まずはログイン未済の状態で、http://127.0.0.1:8000/agecalculate/にアクセスします。

画像20

次にユーザー名とパスワードを入れてログインしてみます。

画像21

ログインユーザーの生年月日と今日の日付から、年齢を表示します。
次に、他人の年齢算出をクリックします。

画像22

ここで名前と聞かれた項目を入力して、「入力完了・算出する」ボタンを押下します。

画像23

画像24

異常で、長らくSNS作成のためのまずは、Djangoの概要となんとなくWebアプリケーションらしきものの作り方の概要が分かりました。

では、SNSを作ってみたいと思います。

ただ、間違いなく2,3倍複雑になるので、次回まずはどういう機能が必要かの要件定義、それをどう実現するかのシステム要件定義らしきものを、ざっくりおこなってから着手したいと思います。

読んでいただき、ありがとうございました!


この記事が気に入ったらサポートをしてみませんか?