fox_12
@fox_12
Расставляю биты, управляю заряженными частицами

Лучшие практики работы с javascript?

Допустим у меня есть повторяющийся блок кода, который я размещаю в нескольких местах сайта. На него навешан обработчик на Javascript. Возникает такая проблема - как собственно его подключать правильно?
Допустим блок я подключу с помощью {% include 'some_block.html' %}. Всякий раз помнить что необходимо отдельно подключать соответствующий код с Javascript-ом в шаблоне? Не очень гибко...
Частично проблему я решаю с помощью django-embedded-media. Но может быть как-то можно еще?
Другая проблема - в файле скрипта я вызываю аяксом какой-то url. В шаблонах удобно прописывать ссылку через {% url 'some_url' param=some_value %}, а как поступить с файлами скриптов? Хардкодить? - Неаккуратненько как-то... Хочется решение получше.
Как вообще общепринято искать выход в данных ситуациях?
Как это организовано в "лучших домах Парижа"?
  • Вопрос задан
  • 1171 просмотр
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Первая проблема решается использованием django-sekizai. В some_block.html включить код
{% addtoblock "js" %}
<script type="text/javascript" src="{% static 'js/some_script.js' %}"></script>
</script>
{% endaddtoblock %}

и в базовом шаблоне
{% render_block "js" %}
После чего можно быть уверенным, что скрипт будет включён в результирующий html-документ ровно один раз и в нужном месте.

Для решения второй проблемы вариантов масса. Один из них - включить в шаблон, из которого будет происходить запрос, код вида
<script type="text/javascript">
    window.urls = {
        some_url: {% url 'some_url' param=some_value %}
    }
</script>

А в скрипте, делающем этот ajax-запрос, url получать с помощью конструкции urls['some_url'].

Или можно использовать что-нибудь вроде django-js-utils.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы