如何将变量传递给自定义 Django 模板加载器?
Posted
技术标签:
【中文标题】如何将变量传递给自定义 Django 模板加载器?【英文标题】:How do I pass a variable to a custom Django template loader? 【发布时间】:2012-02-26 19:45:07 【问题描述】:我在字典中有模板,我希望我的模板加载器能够获取它们。但由于它是由 Django 代码实例化的,因此我当时无法将字典传递给它。
将变量传递给模板加载器的正确方法是什么? (字典是动态构建的,所以我不能使用Django设置文件。)
我的加载器代码,我还不能使用dictionary
:
class Loader(BaseLoader):
is_usable = True
def load_template_source(self, template_name, template_dirs=None):
if template_name in dictionary:
return (dictionary[template_name],template_name)
raise TemplateDoesNotExist("Could not find template '%s'." % template_name)
load_template_source.is_usable = True
【问题讨论】:
【参考方案1】:有什么问题?这应该有效。
只需在某处定义dictionary
..
dictionary = 'template_name' : 'template content'
class Loader(BaseLoader):
is_usable = True
def load_template_source(self, template_name, template_dirs=None):
if template_name in dictionary:
return (dictionary[template_name],template_name)
raise TemplateDoesNotExist("Could not find template '%s'." % template_name)
如果它需要是动态的,请输入一个填充 dictionary
的函数。
class Loader(BaseLoader):
is_usable = True
def load_template_source(self, template_name, template_dirs=None):
if template_name in self.get_dictionary():
return (dictionary[template_name],template_name)
raise TemplateDoesNotExist("Could not find template '%s'." % template_name)
def get_dictionary(self):
dynamic =
# magically dynamically populate the dictionary
return dynamic
【讨论】:
我不得不在另一个函数中填充字典,我忘记在分配给它之前添加global dictionary
。感谢您的帮助。以上是关于如何将变量传递给自定义 Django 模板加载器?的主要内容,如果未能解决你的问题,请参考以下文章
SCNProgram - 如何将“mat4”类型的制服传递给自定义着色器?
Django 如何将自定义变量传递给上下文以在自定义管理模板中使用?