Django组件的最佳实践

Django组件的最佳实践,django,Django,Django提供了一种将资产收集到其小部件框架中的方法,并反过来使用一个表单来表示资产,但是在表单框架之外这样做怎么样 例如,假设我只想要一个简单的、自封闭的web组件,它需要两个.js文件、一个CSS文件和一个模板,并由一个视图支持以生成一些数据。这不是一个表单,因为它不用于收集输入。相反,假设它是一个定制的滚动条。我似乎找不到适合这种使用模式的正确匹配项,尽管它看起来很普通,很直截了当 现在这样做似乎意味着将CSS添加到顶级模板中;JS在包含的文档中任意添加到模板或脚本标签;然后将表单呈现为

Django提供了一种将资产收集到其小部件框架中的方法,并反过来使用一个表单来表示资产,但是在表单框架之外这样做怎么样

例如,假设我只想要一个简单的、自封闭的web组件,它需要两个.js文件、一个CSS文件和一个模板,并由一个视图支持以生成一些数据。这不是一个表单,因为它不用于收集输入。相反,假设它是一个定制的滚动条。我似乎找不到适合这种使用模式的正确匹配项,尽管它看起来很普通,很直截了当

现在这样做似乎意味着将CSS添加到顶级模板中;JS在包含的文档中任意添加到模板或脚本标签;然后将表单呈现为包含。但是有这样的东西不是更容易吗

class ScrollBar(...):
    template_name = ...

    class Assets:
        ...
然后通过templatetag呈现,但是上下文处理器或其他钩子能够将资产提取到页面中适当的位置

比如:

class ScrollBar(...):
    template_name = ...

    class Assets:
        ...
index.html:

<html>
<head>
    ...
    {% compressed_css %}
</head>
<body>
    ...
    {% compressed_js %}
    {% block content %}
    {% endblock %}
</body>
最终结果是使用指定的参数呈现滚动条的模板,其JS和CSS分别合并到上面的压缩的_CSS和压缩的_JS区域中

我认为我们几乎100%都是通过这种方法实现的,没有压缩的js/compressed的css部分,这就提出了一个问题,那就是我们是否只是将它们包含在所有共享页面中。或者,我们可以使用嵌套/继承的块

亚当