如何将变量传递给自定义Django模板加载器?

时间:2012-02-04 13:57:51

标签: django django-templates

我在字典中有模板,我希望我的模板加载器可以获取它们。但是由于它是由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 个答案:

答案 0 :(得分:0)

有什么问题?这应该工作。

只需在某处定义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