我使用的方法是未绑定的吗?

2 投票
2 回答
808 浏览
提问于 2025-04-16 21:52

我正在用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">&nbsp;</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

在EventCal类中,Event的环境变量显示为空,我很确定这就是我一直收到“需要整数而不是字符串”错误的原因。当我把e.dd()改成一个静态数字时,返回的内容除了e.link()和e.res()之外,其他的都正常。

2 个回答

0

formatday 里,你有:

if day == 0:

但是还有:

if day == Event.dd():

而且 Event.dd() 返回的是一个字符串。

那么,day 是整数还是字符串呢?

5

dd() 是一个类的实例方法。

你可以这样调用它:

e = Event()
x = e.dd()

你不能直接在 Event 上使用 dd。

我不太确定你具体想做什么,所以也不太清楚你需要怎么修改你的代码。

撰写回答