как передать строку из Джанго в JavaScript - PullRequest
2 голосов
/ 27 марта 2011

Я без проблем передавал переменные в терминах словаря в шаблон HTML в Django.Теперь я планирую добавить некоторый javascript в файл HTML и использовать тот же способ "{{}}", чтобы получить объект из словаря в javascript.Все объекты в словаре на самом деле являются строками.В Django код:

dataDict = {}
dataDict["time"] = json.dumps(",".join(timeList))
return render_to_response("xxxx.html", dataDict,\
         context_instance=RequestContext(request))

А на HTML-странице и в Javscript я просто хочу использовать строковую переменную, чтобы получить ее, а затем разрешить необходимую информацию, и наш код:

var test = {{ time }};

Но, похоже, Django не может передать данные в строковую переменную в Javascript.Поэтому у меня есть два вопроса:

  1. Существует ли какой-то специальный тип переменной для передачи данных из Django в Javascript.Возможен ли JSON?Или это необходимо преобразовать строку в строку JSON в Django, прежде чем перейти к Javascript?
  2. Как использовать доставленную строку в Javascript?Очевидно, просто используйте var xx = xxxx;не работаетМы думаем, что можем передавать данные, но, похоже, они не могут быть обработаны.

Кто-нибудь имеет представление об этом?

Спасибо!

Ответы [ 2 ]

7 голосов
/ 27 марта 2011

Может быть, вам просто нужно заключить его в двойные кавычки?

var test = "{{time}}";

Предположим, что dataDict['time'] = "1:30 PM, 2:30 PM". Когда ваш шаблон отображается, он создает этот текст (проверьте его самостоятельно с помощью просмотра исходного кода):

var test = 1:30 PM, 2:30 PM;

Как видите, это недопустимый JavaScript. Когда вы делаете двойную кавычку, это становится так:

var test = "1:30 PM, 2:30 PM";

Аналогично, вы захотите заключить в кавычки ваши элементы DOM с интерполированными атрибутами, например, <a href="{{url}}">..</a>. Django встроенный шаблон фильтра документов имеет множество примеров этого.

Важно помнить о разнице между временем оценки / рендеринга шаблона в вашей среде Python и временем выполнения / оценки браузера JavaScript, особенно когда вы пытаетесь передать данные между ними.

1 голос
/ 27 марта 2011

Рекомендуется преобразовать в JSON, чтобы такие вещи, как ложные </script>-содержащие строки, не вызывали проблем с JavaScript. Назначения должно быть достаточно, поскольку строки JSON выглядят как литералы JavaScript.

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