Django日历视图如何传递URL

2024-05-05 03:02:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个日历来显示时间表上的条目。我使用this guide编写django日历,但它没有涵盖最后阶段,也就是说,实际上将url传递到视图并呈现日历。基于一个错误的推测,我的urlconf条目现在变成了这个怪物:

        url(r'^calendar/(?P<pk>\d+)/(?P<start__year>\d+)/(?P<start__month>\d+)/$', calendar(request, year, month)),

因此,观点本身是:

^{pr2}$

压延机的一代是:

class TimesheetCalendar(HTMLCalendar):
    def __init__(self, Timesheet):
        super(TimesheetCalendar, self).__init__()
        self.Timesheet = self.group_by_day(Timesheet)

    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.Timesheet:
                cssclass += ' filled'
                body = ['<ul>']
                for timesheet in self.Timesheet[day]:
                    body.append('<li>')
                    body.append(esc(Timesheet.activity))
                    body.append('</li>')
                body.append('</ul>')
                return self.day_cell(cssclass, '%d %s' % (day, ''.join(body)))
            return self.day_cell(cssclass,day)
        return self.daycell('noday','&nbsp;')

    def formatmonth(self, year, month):
        self.year, self.month = year, month
        return super(TimesheetCalendar, self).formatmonth(year, month)

    def group_by_day(self, Timesheet):
        field = lambda Timesheet: Timesheet.start.day
        return dict(
            [(day, list(items)) for day, items in groupby(Timesheet, field)]
            )
    def day_cell(self, cssclass, body):
        return '<td class="%s">%s</td>' %(cssclass, body)

要从模型中的datefieldstart正确传递这些属性,月份和年份,我必须做些什么?在


Tags: inselfreturnifdefcellbodytimesheet
1条回答
网友
1楼 · 发布于 2024-05-05 03:02:47

我认为url的第二个参数应该是表示函数的字符串或函数对象:

url(r'^calendar/(?P<pk>\d+)/(?P<start__year>\d+)/(?P<start__month>\d+)/$', calendar)

此外,当您在url中使用命名组时(即start__yearstart_month),它们将作为kwargs而不是作为位置参数传递给视图函数

def calendar(request, pk, start__year, start__month):
    pass

相关问题 更多 >