Как передать объект Django в качестве параметра в Javascript?
Итак, как указано в заголовке, я пытаюсь отправить мой объект Django в JavaScript, чтобы я мог массировать его во фронт-энде. Позвольте мне показать вам код (упрощенный). views.py
def main_page(request):
contents = Contents.objects.all()
context = {
'contents' : contents
}
return render(request, 'main/home.html', context)
шаблон
{% for u in all_ans_us_paginated %}
<div class="row">
<div class="col">
<div class="" id="{{u.id}}" onclick="DetailModal('{{u}}')">
</div>
</div>
</div>
{% endfor %}
...
<script>
function DetailModal(u) {
console.log('{{u.author}}');
console.log('{{u.body}}');
}
</script>
Мое намерение - показать модальное окно при срабатывании события click. Но если отбросить модальную часть, я не могу передать данные в качестве параметра JavaScript.
.
*Я не хочу вносить никаких изменений в код python. Возможно ли это сделать только с помощью HTML и JavaScript?
**JSON.parse(u)
не будет работать, потому что u
- строка.
В DJANGO
from django.shortcuts import render
from json import dumps
def send_dictionary(request):
# create data dictionary
dataDictionary = {
'hello': 'World',
'geeks': 'forgeeks',
'ABC': 123,
456: 'abc',
14000605: 1,
'list': ['geeks', 4, 'geeks'],
'dictionary': {'you': 'can', 'send': 'anything', 3: 1}
}
# dump data
dataJSON = dumps(dataDictionary)
return render(request, 'main / app.js', {'data': dataJSON})
В JAVASCRIPT
файлapp.js :
var data = JSON.parse("{{data|escapejs}}");
for(var x in data){
// Write What You Want Here
}
если вы хотите иметь чистый вид кода, используйте этот способ, потому что javaScript рассматривает словари как отдельные объекты
dataDictionary = [
["Laugh", "Cry"],
["Even", "Odd"],
["Hot", "Cold"],
["Light", "Dark"],
["Opposite", "Same"],
["Far", "Near"],
["Give", "Take"],
["Night", "Day"],
["Import", "Export"],
["Hard", "Easy"],
["Never", "Always"],
["Late", "Early"],
["Less", "More"],
["Male", "Female"],
["Happiness", "Sadness"],
["Fast", "Slow"],
["Old", "Young"],
["Boy", "Girl"],
["Up", "Down"],
["Left", "Right"],
["Rich", "Poor"],
["Love", "Hate"],
["Inside", "Outside"],
["Bad", "Good"],
["Short", "Tall"],
]