如何在交互式shell中导入模板标签?

时间:2012-08-20 14:01:29

标签: django django-templates django-shell

如何在交互式shell中导入自定义模板标记或过滤器以查看一切是否正常工作?

我有两台机器表现不同,我不知道如何进行调试。

在生产机器上我无法加载模板过滤器,我收到错误“找不到模板库”。 在本地机器上一切正常。

2 个答案:

答案 0 :(得分:6)

导入如下过滤器:

from django.template import defaultfilters as filters
filters.date( date.today() )

而是应该导入自定义过滤器的默认过滤器:

from myApp.templatetags import poll_extras
poll_extras.cut( 'ello' )

在生产服务器中仔细检查已安装app的设置。

答案 1 :(得分:3)

如果您担心拼写错误,丢失__init__.py个问题或屏蔽ImportError,则可以导入该功能。假设有以下结构:

foo
├── bar
│   ├── __init__.py
│   ├── models.py
│   ├── static
│   │   └── ..
│   ├── templates
│   │   └── ..
│   ├── templatetags
│   │   ├── __init__.py
│   │   └── baz.py
│   ├── views.py
├── manage.py
└── foo
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

以及baz.py的以下内容:

from django import template

register = template.Library()

@register.filter
def capitalize(value):
    return value.capitalize()

你只需要运行

>>> from bar.templatetags import baz
>>> print baz.capitalize('test')
'test'
相关问题