关于python:将strftime()传递到Google应用引擎和jinja2

passing strftime() into Google app engine and jinja2

我有一个Google应用引擎python脚本试图将变量"time"作为一个strftime()调用传递。我已经设置了jinja2以读取其中包含{{time}}的HTML文件作为变量目标。

1
2
3
4
5
6
7
8
9
10
class MainPage(BlogHandler):

    time = ''

    def get_time(you):
        return strftime('%U %A',gmtime())

    def get(self):
        time = self.get_time
        self.render('front.html',time = time)

当我将整个东西呈现/写出到一个简单的DIV标记中时,我得到一个以HTML呈现的对象内存定位器。

1
<bound method MainPage.get_time of <main.MainPage object at 0x1030f0610>>

很明显,它并没有将其作为字符串进行处理。我是否使用了错误的时间函数,这是GAE问题吗?这是金贾2的问题吗?这是一个关于python的问题吗?我显然不知道如何跟进和解决这个问题。谢谢或任何好的批评意见。

我只需要将格式化时间函数呈现为一个字符串,这样我就可以在GAE脚本中使用它。


您只需调用get_time()方法:

1
time = self.get_time()

通过不调用该方法,您所做的就是存储对该方法的引用,然后jinja2将该方法的str()结果包含在模板输出中:

1
2
3
4
5
6
7
8
9
10
>>> from time import strftime, gmtime
>>> class MainPage():
...     def get_time(self):
...         return strftime('%U %A',gmtime())
...
>>> mp = MainPage()
>>> mp.get_time
<bound method MainPage.get_time of <__main__.MainPage instance at 0x1031c7320>>
>>> mp.get_time()
'07 Saturday'