Django将Python对象从视图传递到模板中的Javascript脚本
Posted
技术标签:
【中文标题】Django将Python对象从视图传递到模板中的Javascript脚本【英文标题】:Django pass Python Object from view to Javascript script in template 【发布时间】:2017-05-04 00:27:03 【问题描述】:这是一个仅用于显示问题的简单代码, 显然,这个简单的代码试图做的任务可以在没有 javascript 的情况下完成,但我需要知道如何使用 Javascript 来完成这项工作,因为 在我的真实代码中,我需要它,没有 Javascript 就无法完成 (基本上我用视图中的信息创建了一个动态二维数组)
在 view.py 中
在 def play_game 函数中
...
players = Player.objects.all()
context =
'players' : players
return render(request,'play_game.html', context)
在model.py中
class Player(models.Model):
game = models.ForeignKey(Game, on_delete=models.CASCADE, blank=True, null=True)
loose = models.IntegerField( default=0)
win = models.IntegerField(default=0)
name = models.CharField(max_length=9)
在 play_game.html 中
<script>
var players = "players";
for (player in players)
document.write(player.name);
document.write(" Win:"+ player.win);
document.write("Loose: " + player.loose);
;
</script>
【问题讨论】:
我正在使用python3 所以您想在模板中将players
转换为json?
我不知道那是什么意思。我想在脚本中有对象播放器并像 python 对象一样使用它。示例:
我想做,var play = player.win + player.loose;
【参考方案1】:
你需要serialize你的数据(玩家)。
from django.core import serializers
...
players = serializers.serialize("json", players)
...
return render(request, 'template.html', 'players': players, ...)
在你的模板/脚本中
<script>
var players = players || safe ;
players.map(function (player)
document.write(player.name);
document.write(" Win:"+ player.win);
document.write("Loose: " + player.loose);
);
</script>
见SO 1和SO 2
【讨论】:
我该怎么做? document.write(player.name);如果我做 document.write(players);我看到了:["model":"game.game,"fields""name":"Bob", "win":3,"loose":2 ]以上是关于Django将Python对象从视图传递到模板中的Javascript脚本的主要内容,如果未能解决你的问题,请参考以下文章