【问题标题】:Django, calendarDjango,日历
【发布时间】:2009-08-16 18:05:48
【问题描述】:

我需要使用日历。我正在开发一个出租房屋的网站,我的第一个自己的网络项目,所以,这个想法是用户在同一个月或任何月份(例如从一月到四月)选择一个initial datefinish date,并在住房可用性的视图(模板)中。

我想显示所有月份 (12) 以及房子忙的地方,我会用一些不同的颜色显示日子。

我正在搜索和测试 Django 日历,但如果有人知道,请帮帮我:)

谢谢:)

【问题讨论】:

    标签: django calendar


    【解决方案1】:

    你看过Django ScheduleDjango SwingTime了吗?

    【讨论】:

      【解决方案2】:

      在此处查看一些与日历相关的示例,看看它们是否适合您:

      此外,您可以考虑使用 Python 的 HTMLCalendar,如下所述:

      【讨论】:

        【解决方案3】:

        这是一个覆盖 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)
        

        【讨论】:

        • 那么这是从哪里调用的呢?不是模板,因为它不能做 python 代码。风景?可能是,但所有这些格式对于视图来说似乎都是一个坏主意。你有一个自定义的模板标签吗?无论如何,你应该清楚你认为应该如何使用它。
        猜你喜欢
        • 2017-02-15
        • 1970-01-01
        • 1970-01-01
        • 2013-03-26
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 2017-03-25
        • 2016-12-09
        相关资源
        最近更新 更多