【Django】日時に関するフィードについて

日時には3種類のクラスが用意されています。

DateField日付形式のテキストのみ受け付けます。
TimeField時刻形式のテキストのみ受け付けます。
DateTimeField日付と時刻を続けたテキストのみ受け付けます。

hello/views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import TemplateView
from .forms import HelloForm

class HelloView(TemplateView):
  
  def __init__(self):
    self.params = {
      'title': 'Hello',
      'message': 'your data:',
      'form': HelloForm()
    }
  
  def get(self, request):
    return render(request, 'hello/index.html', self.params)

  def post(self, request):
    self.params['form'] = HelloForm(request.POST)
    return render(request, 'hello/index.html', self.params)

hello/urls.py

from django.urls import path
from .views import HelloView

urlpatterns = [
  path('', HelloView.as_view(), name='index'),
]

hello/templates/index.html

<!doctype html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>hello</title>
</head>
<body class="container">
  <h1 class="display-4 text-primary">{{title}}</h1>
  <p class="h5 mt-4">{{result|safe}}</p>
  <form action="{% url 'index' %}" method="post">
    {% csrf_token %}
    <table>
    {{ form.as_p }}
    <tr><td></td><td>
      <input type="submit" class="btn btn-primary my-2" 
      value="click">
    </table>
  </form>
</body>
</html>

forms.pyに日付関数を定義します。

hello/forms.py

from django import forms

class HelloForm(forms.Form):
  d1 = forms.DateField(label='date', required=True, \
    widget=forms.DateInput(attrs={'class':'form-control'}))
  t1 = forms.TimeField(label='time', \
    widget=forms.TimeInput(attrs={'class':'form-control'}))
  dt1 = forms.DateTimeField(label='datetime', \
    widget=forms.DateTimeInput(attrs={'class':'form-control'}))

webブラウザにてアクセスします。

日付データ以外を入力するとエラーメッセージが表示されます。

正しいフォーマットで入力するとエラーにはなりません。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。