2014-01-15 3 views
0

У меня есть «виджет» карт Google, который включает html, css и javascript, которые должны присутствовать везде, где используется эта карта. Таким образом, я ищу способ извлечь эти компоненты в один виджет, такой как файл, и просто включать этот файл, где бы я ни захотел использовать карту.Включить html, css, js widget в шаблон Django html

я уже рассматривал:

  • делая из трех компонентов трех отдельных файлов, которые будут включены. В настоящее время это решение для моего решения, поскольку я хотел бы, чтобы это был только один файл.

  • включая css и javascript в заголовке, а затем с помощью javascript для добавления желаемого html к элементу, который существует на странице. Это похоже на взломочное решение, и это будет сделано на стороне клиента как таковое, это будет медленнее, чем если бы html был включен на стороне сервера.

  • и решение, предложенное по этому вопросу: How to include plug-n-play widget statics [CSS/JS] without repetition? Но, как человек, задающий этот вопрос, я хотел бы получить лучшее решение, чем просто создать новый базовый шаблон.

Мои предыдущие попытки включали создание HTML-файл с нужным кодом и {% включают в себя «карты-widget.html»%} как в заголовке и в нужном месте. В обеих попытках он заявил, что google api, который включен в виджет, отсутствовал.

Я запускаю python 2.7 и Django 1.5.4.

+0

Если кому-то интересно или натыкается на это в будущем, я в конечном итоге происходит с 3 включает в себя, один для CSS, один для JS, и один для ХТ мл. Я включил js html-файл, чтобы он мог иметь все соответствующие библиотеки google. – Rick

ответ

0

Вы можете поместить HTML, CSS, JS в базовый шаблон для проекта, а затем он будет присутствовать на всех ваших страницах. Вот Джанго Docs, показывающий, как:

http://www.djangobook.com/en/2.0/chapter04.html

Типичная реализация для CSS/JS будет выглядеть следующим образом:

<!-- Your base.html file --> 

{% block static %} 

    Your CSS Files go here 

{% endblock static %} 

{% block content %} 

    This can be a default value, but otherwise your template will override it 

{% endblock content %} 

{% js block %} 

    Your JS files/links 

{% endblock js %} 

А теперь просто расширить шаблон base.html и он унаследует все из CSS/JS файлов

<!-- myTemplate.html --> 

{% extends "base.html" %} 

{% block content %} 

    Your Google Map content, etc... 

{% endblock content %} 
+0

Проблема в том, что, хотя карта используется в нескольких разных местах, она не используется даже близко к половине сайта. Как таковая, кажется, что плохая практика заключается в том, чтобы каждая страница загружала css и js только потому, что ее использовали 2 или 3 страницы. – Rick

+0

У вас может быть несколько шаблонов base.html. Так что просто создайте отдельный базовый шаблон «base_map.html», например, для страниц, которые имеют карту таким образом, что CSS/JS только наследуется этими шаблонами. –

Смежные вопросы