• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Django / Djangoの組み込み日付(date),時間(time),現在時刻(now)を使って時刻を利用する

Djangoの組み込み日付(date),時間(time),現在時刻(now)を使って時刻を利用する

1 組み込みタグdateの使い方
2 組み込みタグ(time)の使い方
3 組み込みタグ(now)の使い方
4 関連記事

組み込みタグとは、Djangoのテンプレートを利用する際に値を変換する便利な機能。こちらの記事で、タグを作成する方法について記載した。

今回の記事では、時刻を表示する組み込みタグのdate, time, nowについて詳細に説明する。

組み込みタグdateの使い方

dateは、dateフォーマットの変数をテンプレート上で指定した形式に変換して表示するためのタグ。以下のような書き方をする。

{{ value|date:"D d M Y" }}

dateフォーマットとは、以下のようなクラスの変数を含む。

  • django.db.models.DateTimeField
  • datetime.datetime(pythonの標準ライブラリ)
  • datetime.date(pythonの標準ライブラリ)

では実装してみましょう。

  • models.pyの実装
from django.db import models
from django.utils import timezone
from django.urls import reverse

class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

Postモデルのcreated_date、published_dateはmodels.DateTimeFieldとして設定している。
次にviews.pyで、ListViewを使ってモデルから値を取得してみる。

  • views.pyの実装
from django.views.generic import ListView

class PostListView(ListView):
    model = Post

    def get_queryset(self):
        return Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')

次にtemplateで以下のように日付を変換する。

  • テンプレート(post_list.html)の実装
{% extends 'blog/base.html' %}
{% block content %}
<div class="centerstage">
    {% for post in post_list %}
        <div class="post">
            <h1><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1>
            <div class="date">
                <p>Published on: {{ post.published_date|date:"Y m d"}}</p>
                <!-- |date "Y m d"(年 月 日) -->
            </div>
            <a href="{% url 'post_detail' pk=post.pk %}">Comments: {{ post.approve_comments.count }}</a>
        </div>
    {% endfor %}
</div>
{% endblock %}

このように設定すると画面では、下のように表示される。

ちなみに、|dateの横の"Y m d"は他にも定義の方法がある。

詳細は、こちらの公式サイトをご参照下さい

他にも、以下のようにpythonの標準ライブラリのdatetime.dateにdateフィルターを使うこともできる。

  • views.pyの実装
from django.views.generic import ListView
from datetime import date
from . import models

class SchoolListView(ListView):
    model = models.School

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["new_date"] = date.today()# 日付をpythonの標準ライブラリから取得
        return context

テンプレートは、以下のように定義する。

  • テンプレートの実装の実装
{% extends 'basic_app/basic_app_base.html' %}

{% block body_block %}

<h1>Welcome to a list of all schools</h1>
    <ol>
        {% for school in school_list %}
        <h2><li><a href="{{ school.id }}">{{ school.name }}</a></li></h2>
        <h4>{{ new_date|date:"Y m d" }}</h4>
        {% endfor %}
    </ol>

{% endblock %}

画面上は、以下のように表示される。

組み込みタグ(time)の使い方

timeの場合は、以下のようなクラスの変数を利用できる。

  • django.db.models.DateTimeField
  • datetime.datetime(pythonの標準ライブラリ)

views.pyは下のように定義する。

  • views.pyの実装
from datetime import datetime
from . import models
from django.views.generic import ListView

class SchoolListView(ListView):
    model = models.School
    template_name = 'basic_app/school_list.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["new_date"] = datetime.now()
        return context

次に、テンプレートは以下のように定義する。

  • テンプレートの実装の実装
{% extends 'basic_app/basic_app_base.html' %}
{% block body_block %}

<h1>Welcome to a list of all schools</h1>
    <ol>
        {% for school in school_list %}
        <h2><li><a href="{{ school.id }}">{{ school.name }}</a></li></h2>
        <h4>{{ new_date|date:"Y/m/d H:i:s" }}</h4>
        {% endfor %}
    </ol>

{% endblock %}

実行すると、以下のように表示される。

組み込みタグ(now)の使い方

nowを利用すると、テンプレート上に現在時刻を表示できるようになる。

以下のように記載する。

{% now "Y/m/d H:i:s" %}

例えば、テンプレートを以下のように実装する。

  • テンプレートの実装の実装
{% extends 'basic_app/basic_app_base.html' %}
{% block body_block %}

<h1>Welcome to a list of all schools</h1>
    <ol>
        {% for school in school_list %}
        <h2><li><a href="{{ school.id }}">{{ school.name }}</a></li></h2>
        {% endfor %}
    </ol>
        <h4>{% now "Y/m/d H:i:s" %}</h4>
{% endblock %}

立ち上げると、画面上で以下のように表示される。

以上で、テンプレートの組み込みタグ、date, time, nowの利用方法について記載しました。
テンプレート上で、dateのフォーマットを変えたい場合は是非、ご活用下さい

 

関連記事

現役エンジニアがDjangoに関する本を5つ紹介
現役エンジニアがDjangoに関する本を5つ紹介
WindowsでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
WindowsでDjango、Anaconda、VSCode…
MacでDjango、Anaconda、VSCodeのインストールとDjangoを開発する環境の構築をする
MacでDjango、Anaconda、VSCodeのインス…
DjangoのFormに初期値を設定する方法
DjangoのFormに初期値を設定する方法
DjangoでModelのsave前後で処理を行うSignalのpre_save, post_saveの使い方
DjangoでModelのsave前後で処理を行うSigna…
DjangoのModelにSlugFieldを利用する。その利用方法と
DjangoのModelにSlugFieldを利用する。その…

Primary Sidebar

人気記事

  • 1
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 2
    Python未経験だが、フリーランスの案件に採用さ…
  • 3
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 組み込みタグdateの使い方
2 組み込みタグ(time)の使い方
3 組み込みタグ(now)の使い方
4 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約