djangoを使う中で、曜日を表示させる方法について説明していきます。
一から順番に説明していきますので、すでに分かっているところがあったら飛ばして下さい。
- dateフィールドを作る
↓ - データをhtmlファイルで表示する
↓ - 表示したデータを曜日にする
このステップで整理していきましょう。
dateフィールドを作る
まずはdateフィールドを作っていきます。
ベースプロジェクトを準備してください。
models.pyファイルに日付のフィールドを書いていきます。
コードBASE/app/models.py
from django.db import models
class AppModel(models.Model):
title = models.CharField(max_length=50)
content = models.TextField()
nowtime = models.DateField(auto_now=True) ← new!
nowtimeフィールドを作りました。ここで作った日時のデータを元に、曜日を表示させていきましょう。
データをhtmlファイルで表示する
次に、nowtimeフィールドをhtmlファイルに表示していきましょう。
コード-BASE/template/detail.html
{{ object.title }}
{{ object.content }}
{{ object.nowtime }}
これでサーバーを立ち上げ、管理画面で一つ新しいデータを追加し、localhost:8000/detail/1にアクセスをしてみましょう。
今回は、title:タイトル、content:内容、nowtime:デフォルト(データの投稿したタイミング)とします。
すると。localhost:8000/detail/1にはこのような表示がされます。
一番右に日時が表示されました。
ここから、この表示を曜日に変えていきましょう。
表示したデータを曜日にする
いよいよ本題の部分です。
表示したデータを曜日にしましょう。
日付のデータを曜日に変えるには、|(パイプ)を使います。
パイプは、パイプの左側のデータに右側のフォーマットでフィルターをかけて表示するときに使われます。
といってもこれではイメージがわきづらいですので、具体的なコードでみていきましょう。
コード-BASE/template/detail.html
{{ object.title }}
{{ object.content }}
{{ object.nowtime | date:"l" }} ← new!
最後の行の部分に注目してください。
object.nowtimeの右側に、| date:"l"と書かれていることが分かります。
こうすることによって曜日を出力することができるのですが、その背景について違う例を使ってみていきましょう。
分かりやすい例で考える
date:"l"は少し難しい表現なので、まずは簡単な表現からみていきましょう。
例えば、このようなコードがあったとします。
コード{{ object.title | lower }}
これは、タイトルを小文字で表現するという意味です。
object.titleというデータにlower(小文字にする)というフィルターをかけて出力をしています。
次に、少し違う表現をみていきましょう。
コード{{ object.content | truncatewords:10 }}
truncatewordsというのは切り捨てるという意味です。
つまり、これはobject.contentというデータを、10文字で切り捨てるということを意味します。
ここで、truncatewordはフィルター、:10というのは引数という整理になります。
この例を見たうえで、date:"l"を見るとイメージがわきやすくなると思います。
このdate:"l"というのは、受け取ったデータを日付のフォーマットに変えて、さらにそれを曜日に変えるという指示をしているのです。
"l"は曜日に変えるという指示です。
この結果として、{{ object.nowtime | date:"l" }}というのは、日付のデータを曜日に変えるという意味になるのです。
実際に出力してみましょう。
日付の部分がSaturdayになっていることが分かります。
曜日以外の指定方法
最後に、日付以外で表現する内容で主要なものを整理しましたので、参考にしてみてください。
一覧を確認したいかたは、djangoの公式サイトの組み込みタグとフィルタというページを参考にしてください。
字 | 内容 | 例 |
d | 日(ゼロで埋める) | 01, 10 |
l | 曜日 | Friday |
m | 月(ゼロで埋める) | 03, 12 |
M | 月をアルファベットで表示 | Jan |
y | 年を2桁で表示 | 19 |
Y | 年を4桁で表示 | 2019 |
H | 時(24時間表記) | 5, 16 |
i | 分(ゼロで埋める) | 00, 47 |
s | 秒(ゼロで埋める) | 00, 50 |
~Django無料講義~のご案内
Code for Djangoが、4時間超の無料Django講義をはじめました
- ・本を出版したCode for Djangoの 製作者が作ったサイトです。
- ・Code for Djangoの内容も、 動画で詳しく解説しています。
- ・動画は順次ふやしていきますので、 ただで学び続けることが可能です。
- ・Djangoの効率的なスキルアップに、 是非お役立て下さい。