Django + twitter bootstrap + github最优雅的方式是什么?

时间:2013-06-26 19:30:15

标签: python django git twitter-bootstrap

我们假设我有一个projecttwo我正在使用Django和twitter bootsrap构建。所述项目在git存储库中进行了版本化。

目前,我和大多数人一样,(或者只会)download bootstrap,执行一些cp -rgit add命令并愉快地编写代码。

但现在我不再思考了。

  • 一切都在git上。
  • git支持subrepos。
  • Django有collectstatic
  • 这是2013年和持续整合等。是十年的流行语

所以:必须有一个更优雅,更简单更好的方式来做这件事因为我所做的一切都将是对 DRY

2 个答案:

答案 0 :(得分:3)

您可以在django中安装此应用并使用

pip install -U django-staticfiles-bootstrap 
./manage.py collectstatic 

将最新的引导代码拉入您的项目:)

https://github.com/Apreche/django-staticfiles-bootstrap

答案 1 :(得分:1)

这可能不是你正在寻找的,因为这个策略中有一个丑陋的部分,但值得一提的是恕我直言。

概述

  1. 在浏览器的调试模式下编译以进行开发。这使您的集成商能够更快地工作,并在浏览器中查看语法错误报告,并使开发变得非常棒。
  2. 使用django-compressor 进行制作,将所有较少的内容预编译为css并使性能更加出色。
  3. 能够在较少的脚本中重用:引导类,变量等等......否则哪些不太好用?问题是你必须让你的编译器在同一次运行中编译bootstrap和你自己的少脚本。
  4. Django级别的基本策略

    这是site_base.html模板可以包含的内容:

    {% if debug %}
        <link rel="stylesheet" type="text/css" href="{% static 'autocomplete_light/style.css' %}" />
        <link href="{{ STATIC_URL }}bootstrap/less/bootstrap.less" charset="utf-8" type="text/less" rel="stylesheet">
        <script type="text/javascript">less = {}; less.env = 'development';</script>
        <script type="text/javascript" src="{{ STATIC_URL }}less.js" ></script>
    {% else %}
        {% compress css %}
        <link rel="stylesheet" type="text/css" href="{% static 'autocomplete_light/style.css' %}" />
        <link href="{{ STATIC_URL }}bootstrap/less/bootstrap.less" charset="utf-8" type="text/less" rel="stylesheet">
         {% endcompress %}
    {% endif %}
    

    好吧,这是丑陋的部分:它不是很干......但它确实很有用。如您所见,您需要debug context processor

    这就是您的设置的样子:

    COMPRESS_PRECOMPILERS = (
        ('text/less', 'recess --compile {infile} > {outfile}'),
    )
    

    注意:当我这样做时,bootstrap只编译在凹陷较少的编译器上。也许现在支持其他编译器,但我不打赌它。

    基本的git策略

    要直接从其repo重新使用bootstrap,请使用git submodules

    较低级别的基本策略

    假设我们创建了一个custom.less脚本,它应该能够重用bootstrap的东西,即。变量,类,混合等等。

    我们现在遇到一个问题:编译器必须同时解析bootstrap的东西和custom.less。否则,在编译custom.less时,编译器如何知道bootstrap的变量?

    因此,您可以在custom.less中导入bootstrap.less,但这会导致修改您的仓库外的文件(请记住:bootstrap.less来自子模块)。

    解决方案:创建master.less,同时导入bootstrap/less/bootstrap.lesscustom.less。不要忘记在master.less中关联bootstrap.less而不是site_base.html