我正在通过Python的HTMLCalendar和Django开发日历。我用来将数据输入日历的功能显示为未绑定,因此无法正常工作。
这是日历代码:
from www.wednesday.models import Event
import calendar
e = Event()
class EventCal(calendar.HTMLCalendar):
def formatday(self, day, weekday):
if day == 0:
return '<td class="noday"> </td>' # Day outside month
if day == e.dd():
return '<td class="%s">%d</p><a href=\"%s\" target=\"_blank\">%s</a></td>' % (self.cssclasses[weekday], day, e.link(), e.res())
else:
return '<td class="%s">%d</td>' % (self.cssclasses[weekday], day)
class rendCal:
c = EventCal(calendar.SUNDAY)
这是我的models.py:
from django.db import models
class Event(models.Model):
Restaurant = models.CharField(max_length=200)
LinkURL = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
DateDay = models.IntegerField(max_length=2)
def dd(self):
return '%i' % self.DateDay
def link(self):
return '%s' % self.LinkURL
def res(self):
return '%s' % self.Restaurant
最后,我的views.py:
from django.shortcuts import render_to_response
import www.wednesday.models
from www.wednesday.cal import rendCal
import datetime as dt
def calendar(request):
now = dt.datetime.now()
cal = rendCal.c.formatmonth(now.year, now.month)
return render_to_response('cal.html', {'calendar': cal})
除了在EventCal类中调用的Event中的函数外,一切都有效。
显然我对此很陌生。
好的,@Marcin要求输入错误,这就是我所看到的,我也纠正了大写。
TypeError at /calendar/
unbound method dd() must be called with Event instance as first argument (got nothing instead)
cal.py in formatday, line 9
来自Event的EventCal中的环境变量显示为空白,我很确定这就是为什么我得到了需求int not str error。当我将e.dd()更改为静态数字时,它会返回除e.link()和e.res()之外的所有内容。
答案 0 :(得分:5)
dd()是类的实例的方法。
你这样称呼它:
e = Event()
x = e.dd()
您无法将dd应用于事件本身。
我不确定您到底要做什么,所以我不确定您需要如何修改代码。
答案 1 :(得分:0)
在formatday
中你有:
if day == 0:
但也是:
if day == Event.dd():
和Event.dd()
返回一个字符串。
那么,day
是一个int还是一个字符串?