繁体   English   中英

如何在 Javascript 中将 Django 对象作为参数发送?

[英]How do I send Django object as parameter in Javascript?

正如标题中提到的,我试图将我的 Django 对象发送到 JavaScript,以便我可以在前端对其进行按摩。 让我向您展示代码(简化)。 视图.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>

我的目的是在触发点击事件时显示一个模态。 但是抛开模态部分,我无法将数据作为参数传递给 JavaScript。

*我不想对python代码进行任何更改。 是否可以仅使用 HTML 和 JavaScript 来实现?
** JSON.parse(u)不起作用,因为u是字符串。

在姜戈

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})

在 Java 脚本中

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"],
   ]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM