Django组件的最佳实践

时间:2014-06-24 21:04:40

标签: django

Django提供了一种将资产收集到其Widget框架中的方法,然后使用表单来呈现它,但是如何在表单框架之外执行此操作?

例如,让我们说我只想要一个简单的,自我封闭的Web组件,它需要两个.js文件,一个CSS文件,一个模板,并由视图支持生成一些数据。这不是一个"形式"因为它不打算收集输入。相反,假设它是一个自定义滚动条。我似乎找不到这种使用模式的正确匹配,即使它看起来很普通也很直接。

现在这样做似乎意味着将CSS添加到顶级模板; JS到模板(或包含文件中任意的脚本标签);然后将表单呈现为包含。但是不容易做出类似的事情:

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

    class Assets:
        ...

然后通过模板标签呈现它,但是能否让上下文处理器或其他钩子将资源提取到页面中适当的位置?

类似的东西:

的index.html:

<html>
<head>
    ...
    {% compressed_css %}
</head>
<body>
    ...
    {% compressed_js %}
    {% block content %}
    {% endblock %}
</body>

滚动条使用-page.html中

{% extends "index" %}
{% block content %}
{% scrollbar args %}
{% endblock %}

结果是滚动条的模板是用指定的args渲染的,它的JS和CSS分别合并到compressed_css和compressed_js区域?

我认为我们通过这种方法几乎100%到达那里,没有compressed_js / compressed_css部分,这引发了一个问题,那就是我们是否只是将它们包含在所有共享页面中。 (或者,我们可以使用嵌套/继承的块。)

亚当

0 个答案:

没有答案