Как передать объект 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"],
   ]
Вернуться на верх