глобальная переменная от django до javascript - PullRequest
4 голосов
/ 05 февраля 2010

Я хотел бы, чтобы некоторые переменные из моего settings.py были доступными в каждом javascript , работающем в моем проекте.

Какой самый элегантный способ достижения этого?

Прямо сейчас я могу думать о двух:

  • написать процессор контекста и объявить эти глобальные переменные в базовом шаблоне. Все шаблоны должны расширять базовый шаблон.

  • объявите эти глобальные переменные в динамически сгенерированном файле .js (по некоторым представлениям) и загрузите этот файл, используя тег <script> в базовом шаблоне. Все шаблоны должны расширять базовый шаблон.

Можно ли сделать это без базового шаблона?

Ответы [ 3 ]

6 голосов
/ 05 февраля 2010

Я бы использовал вариант 1. В любом случае вы должны использовать базовый шаблон, и контекстный процессор, вероятно, является лучшим способом ввода переменных в него.

1 голос
/ 05 февраля 2010

Я не знаком с django, так что это может быть совершенно неверно.

Можете ли вы записать переменные в скрытые поля HTML на странице. Это позволит вам получить доступ к ним из JavaScript или использовать их в сообщениях формы, если вам потребуется.

0 голосов
/ 05 февраля 2010

У меня та же проблема, и я использую некрасивое решение с пометкой «рефакторинг позже».
Я помещаю блок js_top вверху базового шаблона, и тогда любой шаблон, которому нужны дополнительные включения или набор переменных js, может использовать этот блок.
Итак, у меня есть такие вещи, как это:

{% block js_top %}
    <script src="/jquery.useless-plugin.js" type="textjavascript"></script>
    <script type="textjavascript">
        var myVar = {{my_variable.propriety}};
    </script>
{% endblock %}

Конечно, если вам нужна более надежная и менее одноразовая система, я бы пошел с сгенерированным js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...