Django上下文处理器没有Django的其余部分?

2024-06-16 19:40:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将Django模板用作独立的应用程序,但我在Engine.context_processors方面遇到了问题

我的主要文件是:

from django.template import Template, Context, Engine

template_content = """ -- HEADER ---
{{ var|star_wrap }}
{% fullpath "filename_123.txt" %}
{{ abc }}
 -- FOOTER ---"""

data = {'var': 'Ricardo'}

engine = Engine(
    debug=True,
    builtins=['filters'],
    context_processors=(
        'context_processors.my_context_processor'
    )
)    
template = Template(
    template_content,
    engine=engine,
)
context = Context(data)    
result = template.render(context)

在我的filters.py中,我有:

from django import template

# --- Filters
register = template.Library()  # pylint: disable=C0103

@register.filter(name='star_wrap')
def star_wrap(value):
    return "** " + value + " **"

@register.simple_tag(takes_context=True)
def fullpath(context, arg):
    print(context)
    return "/tmp/"+str(arg)

在{}中,我有:

def my_context_processor(request):
    return {'abc': 'def'}

基本上我的my_context_processor中的数据被忽略了。。。没有替换{{ abc }}。请参见上面代码的输出。我还打印了上下文:

[{'False': False, 'None': None, 'True': True}, {'var': 'Ricardo'}]
 -- HEADER ---
** Ricardo **
/tmp/filename_123.txt

 -- FOOTER ---

知道为什么my_context_processor被忽略了吗


Tags: registertruevarmydefcontexttemplateprocessor