如何在Django中实现Symfony的部分或组件?
我在Symfony框架上开发了很长时间,但现在我需要使用Django,遇到了一些问题,特别是如何在Django中实现类似Symfony中的“组件”或“部分”的功能。
说到这里,我的目标是:
我有一个网页,上面有很多小部件,这些小部件都需要各自的逻辑,我想这些逻辑应该放在一个叫“views.py”的文件里。但是,我该如何告诉Django去调用这些逻辑,并把它们全部渲染成一个完整的网页呢?
2 个回答
1
假设你打算在不同的页面上使用这些组件,我建议你试试 {% include "foo.html" %}。Django的模板语言有一个缺点,就是没有宏的概念,所以你在主模板中传递的上下文值的名称需要非常一致,这样被包含的模板才能找到它需要的东西。
另外,你可以在视图中为每个组件调用模板引擎,然后把结果保存到上下文中传递的一个值里。然后在主模板中直接使用这个上下文中的值。
我对这两种方法都不太喜欢。你的模板越复杂,可能就越想看看Jinja2这个工具。(而且,我不太相信Django那种关于“模板设计师”的说法——我一辈子都没见过一个。)
3
听起来你想要的东西类似于自定义模板标签...
你可以自己写一套标签,这些标签可以处理你想要的逻辑,然后返回一些可以重复使用的模板部分,感觉就像小部件一样。