我正在尝试将自己的自定义过滤器添加到我正在撰写的Flask应用中的模板中。目标是显示一个显示帖子“天前”时间的显示(类似于Twitter所做的)。
我的 views.py 文件包含以下内容:
import datetime
@app.template_filter('days_ago')
def days_ago(t=datetime.timedelta(0)):
diff = (datetime.datetime.now() - t)
return diff.days
@app.route('/posts/<id>')
def view_post(id):
p = models.Post.query.get(id)
return render_template('view_post.html',
post = p)
我的 view_post.html 模板包含:
...
<p>{{ post.created_at | days_ago }} days old</p>
...
我一直在遇到这个错误:
TypeError: unsupported operand type(s) for -: 'datetime.datetime' and 'NoneType'
我试图让参数t
默认为datetime
和timedelta
个对象,但我仍然会遇到相同的错误。任何线索?感谢您提前的时间!