【问题标题】:Serializing Django model序列化 Django 模型
【发布时间】:2018-04-16 23:35:44
【问题描述】:

我想序列化我的 Sounds 模型以在我的 game.js 文件中使用。这就是我所拥有的。

views.py

def index(request):
    context = {'sounds': serializers.serialize('json', Sounds.objects.all()) }
    return render(request, 'index.html', context) 

index.html

<button type="submit" onclick="main()">Let's Start!</button>

game.js

function main(){
    var data = {{ context|safe }};
    // print all objects here 
}

它不工作 - 不确定是什么问题。基本上,当我单击 index.html 中的按钮时,它应该转到主函数(这部分有效),然后用模型中的对象设置一个变量数据,以便我可以使用它。另外,是否可以过滤数据中的对象,以便我有一个列表,其中只有 id = 1 的对象?我想在 game.js 中执行此操作(而不是在 views.py 或其他地方)。

【问题讨论】:

    标签: javascript python django


    【解决方案1】:

    如果没有实际的错误日志,很难判断序列化程序的确切问题是什么。如果您确实可以打开运行 django 的控制台,那么它应该在发生错误时显示错误。由此可以更好地诊断问题。将来这样做是明智的,否则这样的问题将被否决。

    是的,您可以使用过滤器功能在 Javascript 中过滤数组。该函数通过对数组中将被传递给函数的对象进行交互来创建一个新数组,如果它应该存在于新数组中,则该函数应返回 true,否则返回 false。

    因此,对于您提供的示例,它将如下所示:

    sounds = sounds.filter((sound) => { sound.id === 1; });
    

    请注意,您必须分配新数组,原始数组不会因运行函数本身而改变。

    我强烈建议您在 Slack Overflow 上创建线程之前自己搜索这些问题的解决方案,否则您的声誉会迅速下降。

    【讨论】:

    • 是的,对不起。我想我几乎点击了标题中带有“django model”和“serialization”的每一个问题,虽然有些问题的情况与我的几乎相同,但解决方案对我不起作用。此外,问题是 Django 没有抛出“错误”,但是 javascript 文件中的行似乎有问题,因为当我将其注释掉时它运行正常,但是当我将它留在里面时按钮停止工作.
    • 当我的意思是搜索自己时,这可以超越 Stack Overflow。一些快速的谷歌搜索可以提供解决方案。您能否添加导致主要问题文本(和上下文)的代码行,以便我自己为其他用户帮助诊断问题?
    • 我也做过很多这样的事情,而且对于 Django(以及整个网络开发)来说是全新的,我似乎找不到快速的解决方案。我知道初学者的问题可能很烦人,但我只是在尝试了许多其他解决方案后才发布这个。我在问题中添加的行是唯一与情况相关的行。就像我在之前的评论中所说的那样,如果我在 game.js 中注释掉 var 数据行,它就会“工作”(例如,按下按钮会正确启动 main 函数)。如果我把那条线留在里面,按下按钮就不起作用。 Django 控制台不会引发错误。
    • stackoverflow.com/questions/42020303/… - 这是一个非常相似的问题,但它对我不起作用。我意识到我应该改变 var data = {{ context|safe }}; to var data = {{sounds|safe }};,但无论如何它都不起作用。
    • 我并不是要攻击你,而是直接发布“我有问题,我不知道为什么会发生,请解决”是在问很多问题 - 这就像在说“问题的答案是什么”这个涉及加法的数学问题”而不是说数字是什么,最好的建议是人们可以给出它来了解加法实际上是什么。至于行 {{ context |安全 }} - 老实说,我不知道什至是什么。代码可能在没有它的情况下运行,因为语法不正确?如果消息没有出现在控制台中,请检查以确保您没有过滤警告或错误。
    猜你喜欢
    • 2011-08-26
    • 2018-01-30
    • 1970-01-01
    • 2017-10-20
    • 2011-04-30
    • 2019-03-19
    • 1970-01-01
    • 2013-01-26
    • 2013-11-27
    相关资源
    最近更新 更多