• 曜日を表示させる方法【一から順番に解説していきます】

    djangoを使う中で、曜日を表示させる方法について説明していきます。

    一から順番に説明していきますので、すでに分かっているところがあったら飛ばして下さい。

    1. dateフィールドを作る
    2. データをhtmlファイルで表示する
    3. 表示したデータを曜日にする

    このステップで整理していきましょう。

    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の効率的なスキルアップに、
       是非お役立て下さい。