我正在尝试将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)在context_processors.py中,我有:
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会被忽略吗?
发布于 2017-05-26 04:14:05
答案是:使用RequestContext而不是Context...
https://stackoverflow.com/questions/44188457
复制相似问题