Python Django日历视图-如何传递URL

Python Django日历视图-如何传递URL,python,django,calendar,Python,Django,Calendar,我需要一个日历来显示时间表上的条目。我曾习惯于编写django日历,但它没有涵盖最后一个阶段,也就是说,实际上是将url传递给视图并呈现日历。基于一个错误的猜测,我的urlconf条目现在变成了一个怪物: url(r'^calendar/(?P<pk>\d+)/(?P<start__year>\d+)/(?P<start__month>\d+)/$', calendar(request, year, month)), 压延机的产生是: cla

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

        url(r'^calendar/(?P<pk>\d+)/(?P<start__year>\d+)/(?P<start__month>\d+)/$', calendar(request, year, month)),
压延机的产生是:

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)
class TimesheetCalendar(HTMLCalendar):
定义初始(自我,时间表):
超级(TimesheetCalendar,self)。\uuuu init\uuuu()
self.Timesheet=self.group\u按天(时间表)
def formatday(自身、日、工作日):
如果有一天0:
cssclass=self.cssclass[工作日]
如果date.today()==日期(self.year、self.month、day):
cssclass+=“今天”
如果在self.时间表中为天:
cssclass+=“已填充”
正文=['
    '] 对于self中的时间表。时间表[天]: body.append(“
  • ”) 正文.附加(esc(时间表.活动)) body.append(“
  • ”) body.append(“
”) 返回self.day_单元格(cssclass,“%d%s%”(day,“.join(body))) 返回自日单元格(cssclass,day) 返回self.daycell('noday','') def格式月(自身、年、月): self.year,self.month=年,月 return super(TimesheetCalendar,self).formatmonth(年,月) def组按天(自身、时间表): 字段=lambda时间表:Timesheet.start.day 返回指令( [(天,列表(项目))表示天,分组中的项目(时间表,字段)] ) def day_单元(自身、cssclass、主体): 返回“%s%”(cssclass,正文)

要正确地从我的模型中的日期字段
start
传递这些属性(月份和年份),我必须做些什么?

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

url(r'^calendar/(?p\d+)/(?p\d+)/(?p\d+/$),calendar)

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

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