簡體   English   中英

Django日歷視圖-如何傳遞URL

[英]Django Calendar View - How to Pass the URL

我需要一個日歷以在時間表上顯示條目。 我使用本指南編寫django日歷,但沒有涵蓋最后階段,也就是說,實際上是將URL傳遞給視圖並呈現日歷。 根據有根據的猜測,我的urlconf條目現在變成了這種怪異:

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

因此,視圖本身是:

def calendar(request, year, month):
    my_timesheet = Timesheet.objects.order_by('start').filter(start__year=year, start__month=month)
    cal = TimesheetCalendar(my_timesheet).formatmonth(year, month)
    return render_to_response('calendar.html', {'calendar':mark_safe(cal),})

日歷生成為:

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)

我該怎么做才能從模型中的日期字段start正確傳遞月份和年份的屬性?

我認為url第二個參數應該是代表您的函數的字符串或函數對象:

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

另外,當您在網址中使用命名組(即start__yearstart_month )時,它們會以kwargs而不是位置參數的形式傳遞給視圖函數

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM