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

Posted

技术标签:

【中文标题】如何在 Javascript 中将 Django 对象作为参数发送?【英文标题】:How do I send Django object as parameter in Javascript? 【发布时间】:2021-12-26 16:39:20 【问题描述】:

正如标题中提到的,我正在尝试将我的 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 是字符串。

【问题讨论】:

***.com/questions/15874233/…的可能重复 【参考方案1】:

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

【讨论】:

以上是关于如何在 Javascript 中将 Django 对象作为参数发送?的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中将参数传递给 websocket

在 Django 中将不同的模板呈现为相同的 URL 模式

如何在 Django 表单输入字段中设置事件处理程序

如何在 django-registration 中将帐户信息传递给 django 模板?

如何在 django 中将多个图像一起发布?

如何在 django 管理中将多个图像上传与 UPLOADIFY 集成?