【发布时间】:2009-08-16 18:05:48
【问题描述】:
我需要使用日历。我正在开发一个出租房屋的网站,我的第一个自己的网络项目,所以,这个想法是用户在同一个月或任何月份(例如从一月到四月)选择一个initial date 和finish date,并在住房可用性的视图(模板)中。
我想显示所有月份 (12) 以及房子忙的地方,我会用一些不同的颜色显示日子。
我正在搜索和测试 Django 日历,但如果有人知道,请帮帮我:)
谢谢:)
【问题讨论】:
我需要使用日历。我正在开发一个出租房屋的网站,我的第一个自己的网络项目,所以,这个想法是用户在同一个月或任何月份(例如从一月到四月)选择一个initial date 和finish date,并在住房可用性的视图(模板)中。
我想显示所有月份 (12) 以及房子忙的地方,我会用一些不同的颜色显示日子。
我正在搜索和测试 Django 日历,但如果有人知道,请帮帮我:)
谢谢:)
【问题讨论】:
【讨论】:
在此处查看一些与日历相关的示例,看看它们是否适合您:
此外,您可以考虑使用 Python 的 HTMLCalendar,如下所述:
【讨论】:
这是一个覆盖 HTMLCalendar 以显示查询集的示例:
class QuerysetCalendar(HTMLCalendar):
def __init__(self, queryset, field):
self.field = field
super(QuerysetCalendar, self).__init__()
self.queryset_by_date = self.group_by_day(queryset)
def formatday(self, day, weekday):
if day != 0:
cssclass = self.cssclasses[weekday]
if date.today() == date(self.year, self.month, day):
cssclass += ' today'
if day in self.queryset_by_date:
cssclass += ' filled'
body = ['<ul>']
for item in self.queryset_by_date[day]:
body.append('<li>')
body.append('<a href="%s">' % item.get_absolute_url())
body.append(esc(item))
body.append('</a></li>')
body.append('</ul>')
return self.day_cell(cssclass, '%d %s' % (day, ''.join(body)))
return self.day_cell(cssclass, day)
return self.day_cell('noday', ' ')
def formatmonth(self, year, month):
self.year, self.month = year, month
return super(QuerysetCalendar, self).formatmonth(year, month)
def group_by_day(self, queryset):
field = lambda item: getattr(item, self.field).day
return dict(
[(day, list(items)) for day, items in groupby(queryset, field)]
)
def day_cell(self, cssclass, body):
return '<td class="%s">%s</td>' % (cssclass, body)
【讨论】: