【问题标题】:passing strftime() into Google app engine and jinja2将 strftime() 传递给 Google 应用引擎和 jinja2
【发布时间】:2023-03-27 11:43:01
【问题描述】:

我有一个 Google App Engine Python 脚本试图将变量“时间”作为strftime() 调用传递。我已将 jinja2 设置为读取带有 {{time}} 的 html 文件作为变量目标

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 中渲染的对象内存定位器

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

显然它没有将其作为字符串处理。我是否使用了错误的时间功能,这是 GAE 问题吗?这是 Jinja2 的问题吗?这是一个python问题吗?我显然不确定如何跟进和解决这个问题。谢谢或任何好的批评建议。

我想要的只是将一个可格式化的时间函数渲染成一个字符串,这样我就可以在 GAE 脚本中使用它了。

【问题讨论】:

    标签: python html google-app-engine jinja2


    【解决方案1】:

    您所要做的就是调用get_time() 方法:

    time = self.get_time()
    

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

    >>> 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'
    

    【讨论】:

    • @underarock:当然,在documentation 中查找strftime() 的参数。请注意,rd 必须手动生成。
    • 哦,你的意思是添加 ()。这是非常明显的,虽然我昨天尝试了这个,但它使 GAE 服务器崩溃。不是今天...谢谢!
    • @underarock:请参阅older answer of mine 以生成日期序数。
    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2013-11-07
    • 2011-03-13
    相关资源
    最近更新 更多