Django в основном является фреймворком для python.Это означает, что он создает ответы на HTML-запросы.Эти ответы обрабатываются с использованием шаблонов, которые содержат HTML-код, который создается на лету.
nvd3.js или d3.js в этом случае живут на веб-интерфейсе, то есть в браузере пользователя.Это означает, что все hvml и javascript-код nvd3.js (например, тот, который вы цитируете) входят в шаблон Django .
Чтобы использовать nvd3.js, вам потребуется загрузить библиотеки d3.js и nvd3.js javascript и соответствующие таблицы стилей .(О том, как это сделать, см. Соответствующую документацию.) Эти элементы должны перейти в другое место в шаблоне (html, куда должна идти диаграмма, css в заголовок и javascript в конце тела).
django-nvd3 - это приложение django, которое используется для упрощения использования nvd3 на внешнем интерфейсе.Это один из вариантов работы с Django и nvd3.js.Он определяет теги шаблона, которые будут включать необходимый код JavaScript и таблицы стилей в ваш шаблон.Первый тег include_chart_jscss
сделает именно это и должен использоваться в разделе <head>
шаблона.Второй тег load_chart
сгенерирует приведенный вами javascript, фактически создавая диаграмму.Третий тег (include_container
) вставит необходимые элементы HTML div
(которые вы не указали в вопросах).Передавая последним тегам то же имя, браузер знает, к какому тегу div применить код JavaScript.Это не помогает распространять биты кода по шаблону.Кроме того, он не генерирует код.Это оставлено другому пакету python-nvd3
, который сам опирается на шаблонизатор (Jinja2), который, вероятно, отличается от того, который вы используете с Django. В двух словах: django-nvd3 решает проблему генерации кода javascript для диаграмм nvd3, но не проблему распределения этого кода в шаблонах django.
Я предлагаю Sekizai для лучшего распределения битов кода.Позволяет разделить html, css и js бит страницы на отдельные блоки.Затем вы можете использовать простые включения, чтобы добавить диаграмму на свою веб-страницу.Во включенном файле вы можете заключить требуемый код CSS в {% addtoblock css %}
, а требуемый JavaScript в {% addtoblock js %}
.При использовании sekizai базовые шаблоны должны иметь эти блоки ("js" и "css"), см. Документацию Sekizai .
Конечно, это вопрос мнения, но япредпочитают использовать sekizai для распределения битов кода nvd3.js в шаблоне и предоставления диаграмм в виде включаемых шаблонов для Django (таким образом, воздерживаясь от затрат на второй механизм шаблонов).Мои шаблоны включения содержат необработанный код nvd3, взятый, например, из одного из примеров.
Я составил три гистограммы, в которых предполагается, что у вас установлен sekizai и он включен в ваши настройки INSTALLED_APPS
:
- Python-код для функции просмотра .Не забудьте включить функцию просмотра в
urls.py
.Код предполагает, что файл с данными json находится в статической папке. - Шаблон с именем
base.html
, который включает html-код отображаемой страницы.Он имеет заголовок и затем включает диаграмму. - A шаблон диаграммы , представляющий собой копию кода в вопросе 1: 1, за исключением того, что некоторые параметры загружаются динамически (исходный файл, клещи).