如何将变量传递给自定义 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 如何将自定义变量传递给上下文以在自定义管理模板中使用?

从 UIViewController 将变量传递给自定义 UITableViewCell

如何使用 Django 的模板扩展变量?

如何使用 Django 的模板扩展变量?

Django,如何将变量从 Django 管理员传递到模板?