让 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 项目