让 django 的人性化在 App Engine 上工作

Posted

技术标签:

【中文标题】让 django 的人性化在 App Engine 上工作【英文标题】:Getting django's humanize working on App Engine 【发布时间】:2012-10-27 22:18:48 【问题描述】:

我正在尝试在浮动中添加逗号,以便在 GAE 上向我的应用程序的最终用户显示。这些数字来自 json,是 10 项查询的一部分,每个查询 2 次(也就是每次页面查看 20 个数字)。例如。

"total_reach": 276160.0, "total_reach": 500160.0 

我正在使用 python GAE SDK 1.7.3 模板系统,只是想用逗号向最终用户显示数字,例如:276,160 和 500,160。请注意,我使用的是默认的 webbapp2 和标准模板(来自 google.appengine.ext.webapp 导入模板),据我所知,它基于 Django。

Django 浮点格式可以很好地去除小数点,但现在我需要添加逗号。 Django 的人性化与它的 intcomma 过滤器看起来很完美。但是,我根本不知道如何启用它。我怀疑它非常简单,而且我很密​​集(而且我对 python 很陌生) - 但我没有想法。

虽然我尝试了一系列方法,但最近和最有希望的是(基于我对 the source 的理解):

from google.appengine.ext.webapp.template import register_template_library
register_template_library('django.contrib.humanize.templatetags.humanize')

这给了我以下 500:

No module named django.contrib.humanize.templatetags

但它似乎在源代码中。

我很茫然。我四处搜索,发现像 this 这样的项目不起作用,似乎是针对 webapp(而不是 webapp2)。帮助和感谢!

更新:

无法使用 settings.py 方法进行。最后,我自己解决了。请参阅下文了解我的实用但不理想的解决方案。

【问题讨论】:

【参考方案1】:

无法使用 settings.py 方法进行。最后我使用了variant of this answer。我复制了source code from here,并将humanize.py 文件顶部的各种Django 导入替换为

from google.appengine.ext import webapp

register = webapp.template.create_template_register() 

然后我添加到我的 main.py 中:

template.register_template_library('tags.humanize')

然后在模板中,我只是按预期添加了过滤器(例如 item.count|intcomma)。我打赌这不是“最佳实践”,但它确实有效。

【讨论】:

【参考方案2】:

我猜你没有在settings.py 文件中将django.contrib.humanize 添加到INSTALLED_APPS

【讨论】:

我在 GAE 项目文件夹中没有看到 settings.py 文件。我知道我会在纯 Django 安装中使用它,但是对于这个项目,我没有使用 Django(除了 GAE 的模板使用的范围之外)。我会按照你的建议创建一个 settings.py 并添加人性化吗? 终于用不同的方法让它工作了。原始问题相应更新。 @mikem 太棒了!您应该回答自己的问题并接受它,而不是更新原始问题。 感谢您的提示。现在会这样做!

以上是关于让 django 的人性化在 App Engine 上工作的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Google App Engine 上使用 Django?

如何在 Django/Google App Engine 中制作日志颜色?

来自 Google App Engine 的 Django 1.5.1 支持

在 Google App Engine 上部署 Django 项目

Cron Job-具有Google App Engine的纯Django项目

使用 Django 配置 Google Cloud App Engine