最近在学习Django,看视频后决定写一个部门内部的轮班日历来巩固下知识。由于是初学,所以实现逻辑上可能会比较乱,这里真诚的希望有朋友能分享下其他的实现逻辑。下面说下大概的我的实现逻辑。
我们部门值班是每人一周,从周天开始到下周的周六结束,固定的人轮流。首先需要自己写个日历这里借助了datetiem 和 calendar库,然后把人员放到列表,然后根据日期去遍历列表里面的人,并把名字展示到日期下面。效果图如下:
.
下面放出views和 htlml 以及自定义标签部分的代码:
views.py:
import calendar
import datetime
from django.shortcuts import render
def get_date(year=datetime.date.today().year, month=datetime.date.today().month):
dw = dict()
isleap = calendar.isleap(year)
first_weekday = calendar.weekday(year, month, 1)
month_big = [1, 3, 5, 7, 8, 10, 12]
month_small = [4, 6, 9, 11]
# 获取当前月份的天数
if month in month_big:
days = 31
elif month in month_small:
days = 30
else:
if isleap:
days = 29
else:
days = 28
for i in range(1, days + 1):
dw[i] = calendar.weekday(year, month, i)
context = {
'year': year,
'month': month,
'dw': dw,
'first_weekday': [i for i in range(1, first_weekday + 1)],
}
return context
def duty(request,