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 自定义模板标签的主要内容,如果未能解决你的问题,请参考以下文章