Google App Engine 中的 Django 自定义模板标签

Posted

技术标签:

【中文标题】Google App Engine 中的 Django 自定义模板标签【英文标题】:Django Custom Template Tags In Google App Engine 【发布时间】:2010-10-20 17:29:23 【问题描述】:

我正在尝试在 Google App Engine Web 应用程序中包含以下标记:

http://www.djangosnippets.org/snippets/1357/

此文件是否有任何配置可以使其与 Google App Engine 一起使用?

因为我遵循了 Django 模板教程:http://docs.djangoproject.com/en/dev/howto/custom-template-tags/

并具有这样的结构:

templatetags/
    __init__.py
    range_template.py

在模板文件中,我有 %load range_template%

但我得到了错误:

TemplateSyntaxError: 'range_template' 不是有效的标签库:无法从 django.templatetags.range_template 加载模板库,没有名为 range_template 的模块

这不起作用的另一件事可能是 INSTALL_APPS settings.py 文件。不知道怎么配置。

我的应用程序根目录中有一个 settings.py 文件,其中包括:

INSTALLED_APPS = ('templatetags')

任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

尝试执行以下操作:

$ python ./manage.py startapp foo

将 foo 添加到已安装的应用中:

INSTALLED_APPS += ('foo',)

并将您的 templatetags 目录移动到您的 foo 应用程序中。比如:

./djangoproject
    __init__.py
    settings.py
    urls.py
    etc..
    foo/
        __init__.py
        templatetags/
            __init__.py
            range_template.py

Django 约定是模板标签代码驻留在应用程序中,在名为 templatetags (see docs) 的目录中。我认为 GAE 也是如此。

【讨论】:

如果我这样做,我是否需要在谷歌应用引擎生产服务器上也配置它? 我不确定你的意思。我想,您想要影响生产服务器的任何更改都必须对您的生产服务器进行。我对django很熟悉,但对谷歌的服务环境不太熟悉。 当您执行 appcfg.py 更新时,会将您的本地文件上传到 AppEngine 服务器。所以你需要做的所有配置都在你的开发环境中,通过appcfg.py update命令镜像到服务器上。 Per Siva 的回答如下 - 不要忘记重新启动开发服务器。这是很少会自动获取更改的情况之一。【参考方案2】:

如果有人搜索这个,我在 2008 年写了一篇关于这个的小文章:http://daily.profeth.de/2008/04/using-custom-django-template-helpers.html

【讨论】:

链接当前已损坏【参考方案3】:

请务必在完成上述步骤后重启开发服务器

【讨论】:

在为 GAE 配置 smart_if 时,这让我大吃一惊。 +1

以上是关于Google App Engine 中的 Django 自定义模板标签的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS 中的 Google App Engine 日志记录

Google App Engine 中的 Django 模板语法错误

数据存储区中的 Google App Engine 版本控制

Google App Engine 中的 GeoModel 使用

Google App Engine 中的漂亮网址

将参数传递给 app.yaml Google App Engine 中的 php