Движок шаблонов Django и внешние файлы js

Я пишу приложение движка приложений Google, и, очевидно, фреймворк веб-приложений по умолчанию является подмножеством Django. Поэтому я использую его шаблонизатор.

У меня вопрос, если я скажу следующий код:

    template_values = {
   'first':first,
   'second':second,
  }

  path = os.path.join(os.path.dirname(__file__), 'index.html')

  self.response.out.write(template.render(path, template_values))

И я хочу сослаться на значение шаблона first во внешнем включенном файле javascript из index.html, могу ли я просто продолжить использование {{ first }}, которое я бы использовал в самом index.html, или мне нужно сообщить фреймворку о example.js как-то тоже так, чтобы он знал заменить там ссылку?


person rutherford    schedule 09.09.2010    source источник


Ответы (2)


Отказ от ответственности: мои знания о движке приложений ограничены, поэтому этот ответ может не служить вашей цели.

В Django, если вам нужно иметь возможность передавать переменные из представления в файл JS, вам нужно будет убедиться, что файл анализируется механизмом шаблонов. Другими словами, файл должен обслуживаться Django. Это означает, например, что если у вас есть файл JS в каталоге media, который обслуживается, скажем, Nginx, вы не сможете использовать в нем переменные шаблона.

Я ожидал, что то же самое применимо и к движку приложений. Но тогда см. Заявление об отказе от ответственности. Я могу ошибаться: P

person Manoj Govindan    schedule 09.09.2010
comment
подозревал это - как это достигается в коде? просто добавить его в переменную пути? - person rutherford; 09.09.2010
comment
Я знаю ответ для Django - обслуживайте этот JS-файл, используя тонкую оболочку над direct_to_template. Однако я не знаю, как это сделать в движке приложения. - person Manoj Govindan; 09.09.2010
comment
Я посмотрел на метод Django. Честно говоря, я не большой поклонник фреймворков, и, похоже, мне нужно было бы использовать полную библиотеку Django для этого, я думаю, я просто передам любые динамические переменные в качестве аргументов функции. - person rutherford; 09.09.2010

Вставка значения в javascript, вероятно, плохая идея; Было бы разумнее, если бы сценарий был статическим и он мог бы захватывать данные либо из DOM (при условии, что это часть HTML-страницы, которую вы рендерируете), либо получать необходимые данные с сервера с помощью вызова AJAX ?

person Wooble    schedule 09.09.2010
comment
открыт для предложений, почему это лучше? Вызовы Ajax были бы ненужными накладными расходами imo, но мне нравится идея вставки DOM. Я думаю, немного естественнее разместить данные на странице? - person rutherford; 10.09.2010