Как использовать менеджер пакетов bower в приложении Django?

17

Я новичок в структуре Django, и я прочитал, что «статические» файлы, такие как css и js, должны находиться внутри «статического» каталога, но мой вопрос:

Учитывая, что менеджер пакетов bower устанавливает свои зависимости в новый каталог с именем bower_components в текущем каталоге, bower.json должен быть создан в «статическом» каталоге django? и если это правда, не bower.json экспортируется с помощью команды collectstatic? (что-то может не понадобиться)

Каков рекомендуемый способ работы с базой данных и Django?

Update:

Спасибо Yuji 'Tomita' Tomita, ваш ответ может дать больше перспективы. Я хочу использовать беседу для управления внешними зависимостями, такими как jQuery, bootstrap и т. Д., Как вы видите, логикой должно быть внутри каталога static / django, но сделать это таким образом, может привести к тому, что bower.json будет рассматриваться как статический ресурс, что-то может не понадобиться.

    
задан Roberto Aguilar 03.06.2014 в 21:12
источник

5 ответов

6

Я выполнил это сообщение в блоге, чтобы настроить проект django bower:

Структура проекта:

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

My .bowerrc :

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

И мои пользовательские компоненты, такие как:

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

My 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}),)
    
ответ дан Karolis Šarapnickis 31.05.2015 в 22:28
  • @juho имеет надлежащий способ использования django-bower. Ваше использование {{STATIC_URL}} и отсутствие BOWER_INSTALLED_APPS почти полностью побеждает цель использования django-bower. –  arctelix 13.03.2016 в 21:28
  • @arctelix: Хорошо, что этот ответ не использует django-bower. –  jazzpi 29.12.2016 в 18:56
  • @jazzpi Да, я полностью прыгнул с пистолета на мой предыдущий комментарий. Я увидел название проекта django bower и предположил, что они относятся к пакету django-bower. В то время мне не приходило в голову, что они просто означают, что Django + bower ... duh –  arctelix 29.12.2016 в 19:18
2

Нет рекомендуемого способа - это зависит от вашего проекта. Если вы используете bower, узел больше, чем проект django, имеет смысл разместить его в корне вашего проекта (выше django), чтобы его можно было повторно использовать в другом месте.

Если это чисто для статических файлов django, тогда имеет смысл разместить его в src/ вне системы staticfiles , которая строит статический каталог, который экспортируется через collectstatic.

    
ответ дан Yuji 'Tomita' Tomita 03.06.2014 в 22:55
2

Вы должны указать установленные пакеты bower в settings.py, используя ключ BOWER_INSTALLED_APPS.

Теперь на вашем сервере разработки, используя {% static%} templatetag, находит их из своего установленного каталога. На рабочем сервере сборщик будет собирать правильные статические файлы из установленного каталога (bower_components).

Подробнее: Ссылка

    
ответ дан Juho Rutila 11.06.2014 в 14:55
2

Если вы боитесь включения bower.json, команда collectstatic имеет параметр --ignore , который вы можете использовать, чтобы исключить все, что хотите.

    
ответ дан aris 29.08.2014 в 23:40
2

Нет необходимости в таких приложениях, как django-bower или других специализированных инструментах, которые занимают ресурсы сервера, замедляют время сборки и значительно ограничивают полезность беседки. Особенно, когда у вас есть вложенные приложения django со своими зависимостями в беседке.

Вы можете проверить мой учебник о том, как легко интегрировать Django + Bower + Heroku здесь . . Хотя это руководство предназначено для геройку, эта методология применяется к любому сценарию развертывания.

    
ответ дан arctelix 18.10.2016 в 00:57