django – 如何制作模板扩展另一个?
发布时间:2020-12-20 11:14:26 所属栏目:Python 来源:网络整理
导读:我有一些模板,我正在根据我存储在数据库中的一些数据构建: my_template = Template(string_data) 现在我希望该模板扩展另一个模板(也作为文本存储在数据库中).我怎样才能做到这一点?寻找类似的东西: my_template.base = other_template 或者无论语法是什
我有一些模板,我正在根据我存储在数据库中的一些数据构建:
my_template = Template(string_data) 现在我希望该模板扩展另一个模板(也作为文本存储在数据库中).我怎样才能做到这一点?寻找类似的东西: my_template.base = other_template 或者无论语法是什么.找不到相关的文档. 我在源头看到template.nodelist;我可以预先添加某种扩展节点吗? 添加赏金……将授予第一个能告诉我如何在不破坏django核心的情况下做到这一点的人. 解决方法
无需破解Django的核心.像Ignacio推荐的那样,创建自己的模板加载器非常简单.您只需要子类化django.template.loader.BaseLoader,并实现load_template_source方法.这只是一个字符串作为模板名称,您可以使用它来查找数据库中的项目并返回字符串.
在您的情况下,由于您在单个数据库行中有两个模板元素,您可能想要在extends标记中指定它: {% extends "myinstance.html_version" %} 并简单地在load_template_source中拆分: def load_template_source(self,template_name,template_dirs=None): name,field = template_name.split('.') tpl = TemplateModel.objects.get(name=name) return getattr(tpl,field) 当然你想在那里放一些错误处理,但你明白了.然后,您只需在设置TEMPLATE_LOADERS元组中指定此模板加载器. 注释后编辑我仍然不明白为什么,但如果您只想选择要动态扩展的模板,为什么不在处理之前将其插入文本模板中呢? tpl_string = get_template_from_wherever() extender = '{% extends "%s" %}' % template_name_to_extend tpl = Template(extender + tpl_string) 仍然是一个黑客攻击,但可能远不如使用模板继承的内部结构. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 利用Python写了个成语接龙!我弟弟已经玩了三天了!还是玩不
- python – 正确使用scipy.interpolate.RegularGridInterpol
- Python中利用sqrt()方法进行平方根计算的教程
- 如何在python代码中包装和对齐注释
- ipython-notebook – 通过django_extensions使用时设置IPyt
- python – 缺少mysql.sock;出现OperationalError:(2002,“
- python – 尝试将消息发送到远程队列时的pika.exceptions.
- 浅谈Python 集合(set)类型的操作――并交差
- python递归打印某个目录的内容(实例讲解)
- 这个python函数可以被矢量化吗?