我遇到了一个问题,即发布一个包含数组的数组的JSON对象,然后使用Django Rest Framework将其反序列化。
这里的想法是,可以有动态的玩家数量(players: 2
)和玩家拥有的武器列表列表/数组(player_weapons [[], []]
)。
//javascript on client
var post_data = {
players: 2,
player_weapons: [
["sword", "shield"],
["mace", "slingshot"],
]};
var results = jQuery.post( url, post_data );
#serializers.py
class GameSerializer(serializers.Serializer):
players = serializers.IntegerField(min_value=1)
player_weapons = serializers.ListField(
child=serializers.ListField(
child=serializers.CharField(min_length=1, allow_blank=True),
min_length=0,
required=False),
min_length=0,
required=False
)
我得到的request.POST
是:
<QueryDict: {'runs': ['1000'], 'additional_players': ['2'],
'player_weapons': ['sword,shield', 'mace,slingshot']}>
真正奇怪的是,当我request.POST['player_weapons']
时得到:
mace,slingshot
我希望/希望得到:
[['sword', 'shield'], ['mace', 'slingshot']]
任何有关如何构造POST并在DRF中处理它的帮助都将很棒。
答案 0 :(得分:0)
感谢RishiG的帮助。
问题是我没有在请求中指定contentType。我对它稍加修改以使用jQuery的ajax请求:
var posting = jQuery.ajax({
url: url,
type: "POST",
data: JSON.stringify(post_data),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(){
}
});