2015-02-23 75 views
1

我有一个python项目,我使用Django模板来生成C++源代码。如何定义自定义过滤器以最小化django模板的使用?

我选择了Django是因为模板语言的限制性很强,并且有一个非常大的社区,使最终用户开发人员可以轻松地使用和获取帮助。

我无法为我的项目添加自定义过滤器(将一组类型名称转换为另一个类型名称),因为我没有完成正常的django设置。

相反:

from django.template import Context, Template 
import django 

if not django.conf.settings.configured : django.conf.settings.configure() 
django.setup() 

让我用Django模板完美,但不能定义自定义过滤器。

我的自定义过滤器被称为ctypes_filters.py,我引用它的模板

{% load ctypes_filters %} 

以下错误运行我的生成脚本结果:

django.template.base.TemplateSyntaxError: 'ctypes_filters' is not a valid tag library: Template library ctypes_filters not found, tried 

django.templatetags.ctypes_filters 

我怎样才能到的Django找到没有设置完整的Django项目(数据库定义等)的过滤器?

我知道其他模板解决方案可供选择(和可能更轻质的),但我真的很热衷于使用Django的简单和优雅的模板。

回答

1

Django的模板标签的位置按照惯例而不是配置设置(见模板标签文档的code layout部分)完成。

ctypes_filter.py置于已安装应用程序的templatetags目录中(我在此称其为myapp)。向myapptemplatetags目录中添加一个空的__init__.py。该应用程序不需要您可能在Django应用程序中常见的任何其他文件,如models.pyviews.py

myapp/ 
    __init__.py 
    templatetags/ 
     __init__.py 
     ctypes_filter.py 

然后在您的INSTALLED_APPSmyapp配置您的设置时。

django.conf.settings.configure(
    INSTALLED_APPS=('myapp',), 
) 
+0

看起来不错。我仍然收到一个错误,可能是因为它不在cwd中查看: 'django.template.base.TemplateSyntaxError:'ctypes_filter'不是有效的标记库:找不到模板库ctypes_filter,尝试过django.templatetags.ctypes_filter ,django_apps.templatetags.ctypes_filter” – jbcoe 2015-02-24 01:52:41

+0

我添加django_apps/templatetags/ctypes_filter.py和创建两个目录中的空__init__.py。现在按要求工作。 谢谢。 – jbcoe 2015-02-24 02:07:30

相关问题