Boolean データが JavaScript から Django ビューに送信されると、"True"/"False" (大文字) ではなく "true"/"false" (小文字) として渡されることに気付きました。これにより、アプリケーションで予期しない動作が発生します。例えば:
投票.js
....
var xhr = {
'isUpvote': isUpvote
};
$.post(location.href, xhr, function(data) {
doSomething()
});
return false;
});
ビュー.py
def post(self, request, *args, **kwargs):
isUpvote = request.POST.get('isUpvote')
vote, created = Vote.objects.get_or_create(user_voted=user_voted)
vote.isUp = isUpvote
vote.save()
この投票を保存してDjango管理ページを確認すると、javascriptからtrueまたはfalseが渡されたかどうかにかかわらず、「isUpvote」は常にTrueに設定されます。では、javascript の「true/false」ブール値を Django の「True/False」値に変換する最良の方法は何ですか?
ありがとう!!
追加した:::::
さて、ビューで何か間違ったことをしていないかどうかを確認するために、いくつかの「印刷」行を追加しました。
print(vote.isUp)
vote.isUp = isUpvote
print(vote.isUp)
vote.save()
結果:
True
false //lowercase
そして、Django管理者を確認すると、「True」として保存されています!!! したがって、これは、何らかの奇妙な理由で、lowercaesの「false」がDjangoの「True」値として保存されることを意味すると思います....