前提・実現したいこと
日 出社 退社
01(木) 09:00 15:30
02(金) 08:25 18:00
03(土) 09:45 18:45
djangoとpythonで勤怠管理システムを作っています。
日づけ欄の日にちと曜日をループさせたいのですが、方法がわかりません。
該当のソースコード
ソースコード
view.py
from django.shortcuts import render from django.http import HttpResponse from django.contrib.auth.decorators import login_required from .models import Attendance from datetime import datetime import datetime from django.utils import timezone import pytz @login_required def index(request): data = Attendance.objects.all() dt_now = datetime.datetime.now() if data.count() == 0 : params = { 'data':Attendance(), 'time':dt_now, } else : params = { 'data':data[0], 'time':dt_now, } return render(request,'app1/index.html', params) def attendance_time(request): data_all = Attendance.objects.all() data_exist = Attendance.objects.count() dt_now = datetime.datetime.now() if data_exist == 0 : print(dt_now.strftime('%Y年%m月%d日 %H:%M')) Attendance( attendance = dt_now, user = request.user).save() else : data_all = Attendance.objects.all() params = { 'data':data_all[0], 'time':dt_now, } return render(request,'app1/index.html',params) def out_time(request): data_all = Attendance.objects.all() data_exist = Attendance.objects.count() dt_now = datetime.datetime.now() if data_exist == 0 : params = { 'data':data_all[0], 'time':dt_now, } print("退勤しました") print(dt_now.strftime('%Y年%m月%d日 %H:%M')) Attendance.objects.filter(user=request.user).update(out=dt_now) return render(request,'app1/index.html',params) def list(request): dt = datetime.date(2020, 11, 1) for i in range(1,31): dt_work = dt + datetime.timedelta(days=i) params = { 'calender':dt_work.strftime('%d(%a)'), 'data_box':dt_work.strftime('%d(%a)'), } return render(request,'app1/list.html',params)
list.html
<!doctype html> <html lang="ja"> <head> <meta charset="utf-8"/> <title>app1</title> <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/uikit@3.3.0/dist/css/uikit.min.css" /> <script src="https://cdn.jsdelivr.net/npm/uikit@3.3.0/dist/js/uikit.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/uikit@3.3.0/dist/js/uikit-icons.min.js"></script> <link rel="stylesheet" href="../../static/app1/css/style.css"> </head> <body> <div class="header uk-child-width-1-1@s uk-text-center" uk-grid> <div> <div class="uk-background-primary uk-light uk-padding uk-panel"> <p class="uk-h4">一覧表示</p> <p>{{ day }}</p> <p>{{ time|date:"Y/m" }}</p> <p>{{ time }}</p> <p>{{ year }}</p> <p>{{ repeat }}</p> </div> </div> </div> <table border="1" width="300" > <tr> <th>日</th> <th>出社</th> <th>退社</th> </tr> <tr> <td>{{ data_box }}</td> <td></td> <td></td> </tr> <tr> <td>{{ data_box }}</td> <td></td> <td></td> </tr> <tr> <td>{{ data_box }}</td> <td></td> <td></td> <!-- セルを横に2つ結合する --> </tr> </table> </body> </html>
試したこと
test.py
import datetime import locale locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8') for i in range(1,31): dt = datetime.date(2020, 11, 1) dt_work = dt + datetime.timedelta(days=i) print(dt_work.strftime('%d(%a)'))
上記test.pyでは日付と曜日のみをループ処理することができました。
実際にhtmlに表示するときに、どのようにコードを書けば良いかがわかりません。