【问题标题】:How to use bower package manager in Django App?如何在 Django App 中使用 Bower 包管理器?
【发布时间】:2014-07-24 06:12:56
【问题描述】:

我是 Django 框架的新手,我已经读到像 css 和 js 这样的“静态”文件必须在“静态”目录中,但我的问题是:

鉴于 bower 包管理器将其依赖项安装在当前目录中名为 bower_components 的新目录中,是否必须在“静态”django 目录中创建 bower.json?如果是真的,是不是 bower.json 用 collectstatic 命令导出的? (可能不想要的东西)

推荐使用 bower 和 Django 框架的方法是什么?

更新:

感谢 Yuji 'Tomita' Tomita,您的回答可以提供更多视角。我想使用 bower 来管理 jQuery、bootstrap 等前端依赖项,如您所见,逻辑必须在 de static/django 目录中,但这样做会导致 bower.json 被视为静态资源,可能不需要。

【问题讨论】:

    标签: python django bower


    【解决方案1】:

    我按照this 的博文设置了我的 django bower 项目:

    项目结构:

    |-root
      |-app
         |-assets
         |-static
         |-templates
         |settings.py
         |urls.py
         |views.py
         |wsgi.py
      |manage.py
      |bower.json
      |.bowerrc
    

    我的.bowerrc

    {
        "directory": "app/static/bower_components"
    }
    

    我像这样使用凉亭组件:

    <script src="{{ STATIC_URL }}bower_components/angular/angular.js"></script>
    

    我的settings.py

    STATIC_URL = '/static/'
    STATIC_ROOT = join(BASE_DIR, 'assets')
    STATICFILES_DIRS = [join(BASE_DIR, 'static')]
    

    还有urls.py:

    urlpatterns += patterns('',
                            (r'^static/(?P<path>.*)$', 'django.views.static.serve',
                             {'document_root': settings.STATIC_ROOT}),)
    

    【讨论】:

    • @juho 有使用 django-bower 的正确方法。您使用 {{ STATIC_URL }} 和缺少 BOWER_INSTALLED_APPS 几乎完全违背了使用 django-bower 的目的。
    • @arctelix:好在这个答案没有使用 django-bower。
    • @jazzpi 是的,我完全跳过了我之前的评论。我看到标题 my django bower project 并假设他们指的是 django-bower 包。当时,我没有想到他们只是指 Django + bower...duh
    【解决方案2】:

    不需要像 django-bower 这样的应用程序,或其他占用服务器资源、减慢构建时间并极大限制 bower 实用性的专用工具。尤其是当您有嵌套的 django 应用程序和它们自己的 bower 依赖项时。

    您可以查看我的教程,了解如何无缝集成 Django + Bower + Heroku here 虽然本教程针对的是 heroku,但该方法适用于任何部署场景。

    【讨论】:

      【解决方案3】:

      没有推荐的方法 - 这取决于您的项目。如果您将 bower、node 用于 django 项目以外的其他项目,则将其放在项目根目录(在 django 之上)可能是有意义的,以便可以在其他地方重用。

      如果它纯粹用于 django 的静态文件,那么将它放在 staticfiles 系统之外的 src/ 中可能是有意义的,该系统构建到通过 collectstatic 导出的静态目录。

      【讨论】:

        【解决方案4】:

        您应该使用键 BOWER_INSTALLED_APPS 在 settings.py 中列出已安装的 Bower 包。

        现在,在您的开发服务器中,使用 {% static %} 模板标签从它们的安装目录中找到它们。在生产服务器中,collectstatic 将从安装目录(bower_components)中收集正确的静态文件。

        查看更多:http://django-bower.readthedocs.org/en/latest/usage.html

        【讨论】:

          【解决方案5】:

          如果您害怕 bower.json 被包含在内,collectstatic 命令有一个 --ignore 选项,您可以使用它来排除您想要的任何内容。

          【讨论】:

            猜你喜欢
            • 2014-07-26
            • 2014-10-14
            • 2016-04-24
            • 2015-04-11
            • 2016-05-14
            • 2016-08-25
            • 2013-12-28
            • 1970-01-01
            • 2013-10-23
            相关资源
            最近更新 更多