如何定义自定义过滤器以尽量减少使用 django 模板?
How do I define custom filters for minimal use of django templates?
我有一个 python 项目,我正在使用 Django 模板生成 C++ 源代码。
我选择 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 简单而优雅的模板。
Django 模板标签的位置是通过约定而不是配置设置完成的(请参阅模板标签文档的 code layout 部分)。
将 ctypes_filter.py
放在已安装应用程序的 templatetags
目录中(我在这里将其命名为 myapp
)。将空 __init__.py
添加到 myapp
和 templatetags
目录。该应用程序不需要您可能在 Django 应用程序中常见的任何其他文件,例如 models.py
或 views.py
.
myapp/
__init__.py
templatetags/
__init__.py
ctypes_filter.py
然后在配置设置时在 INSTALLED_APPS
中包含 myapp
。
django.conf.settings.configure(
INSTALLED_APPS=('myapp',),
)
我有一个 python 项目,我正在使用 Django 模板生成 C++ 源代码。
我选择 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 简单而优雅的模板。
Django 模板标签的位置是通过约定而不是配置设置完成的(请参阅模板标签文档的 code layout 部分)。
将 ctypes_filter.py
放在已安装应用程序的 templatetags
目录中(我在这里将其命名为 myapp
)。将空 __init__.py
添加到 myapp
和 templatetags
目录。该应用程序不需要您可能在 Django 应用程序中常见的任何其他文件,例如 models.py
或 views.py
.
myapp/
__init__.py
templatetags/
__init__.py
ctypes_filter.py
然后在配置设置时在 INSTALLED_APPS
中包含 myapp
。
django.conf.settings.configure(
INSTALLED_APPS=('myapp',),
)