我的模型中有一些数据经常使用相同的html / js / css进行渲染。我很想找到一个自定义模板标签,以简化将模型渲染为{% create_component mymodel %}
之类的东西。但问题是css / js也包含在内,我希望它能自动添加到页面的头部(不在页面正文的某个地方)
有没有办法实现这个目标?
谢谢!
答案 0 :(得分:0)
我使用队列为templatetag写了一个django labjs。除了减少资源阻塞的优点外,它还可以更轻松地创建包含自己的javascript的组件,而无需担心性能或双重调用。
如果你加载一个javascript文件两次,它会忽略第二个调用,并将它与django compress结合使用,你可以制作“bundle”。它仍然不完美,我正在研究编写一个使用headjs的django应用程序,并制作一个更成熟或更全面的应用程序来处理包含html和css的可重用django组件。
这适用于js,但对于css,你可以做类似的事情,一个用于动态加载css文件的js库。
在客户端处理此问题的好处是,您可以获得延迟加载的反阻塞优势。
如果您只想要一个简单而简单的服务器端方式,那么您要寻找的是css / js注册表。您可以轻松编写一个输出头部中所有“已注册”js和css的中间件,并且可以在自定义模型模板标签中包含一些css / js注册。
您可以为此使用或重复使用django-assets。