Я хочу передать переменную django, которая представляет собой словарь, подобный этому {u'testvar1': u'1', u'testvar2': u'38', u'testvar3': u'160'} в javascript. Как я могу сделать это? Кажется, я не могу найти решение для того же самого. Я новичок в django, так что извините за этот нубский вопрос.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы передаете переменные через контекст, а затем можете использовать их в своем скрипте в шаблоне django.
def myview():
...
return render(request, 'my_template.html', {'testvar1': testvar1}
<script>
var testvar1 = {{ testvar1 }}
</script>
Я пробовал это, но переменная javascript testvar1 становится строкой. Я хочу сохранить свою переменную django в форме json в javascript
def foo_view(request, slug):
context_data = {u'testvar1': u'1', u'testvar2': u'38', u'testvar3': u'160'}
return render(request, 'foo_template.html', context_data)
#foo_template.html
<script type = "text/javascript">
var a = "{{testvar1}}";
</script>
Во-первых, тот факт, что у вас есть строки, начинающиеся с u, означает, что вы используете Python 2.7, который является не только очень старой версией Python, но также означает, что вы используете устаревшие версии Django, поскольку более поздние версии поддерживают только Python 3. Вам следует обновить оба сразу.
Однако, чтобы ответить на ваш вопрос, вы должны использовать для этого JSON.
return render(request, 'my_template.html', {'data': json.dumps(data)}
и в вашем шаблоне:
var data = JSON.parse("{{ data|safe }}")
Сначала возьмите этот словарь в шаблоне Django и установите для него значение одного из элементов html следующим образом:
<input type = "hidden" id = "dict" value = "{{your dict}}">
Теперь возьмите значение элемента html в javascript.
In java script:
<script>
var dict = document.getElementById("dict").value;
</script>
Вы можете просто передать его как объект JSON