我注意到当布尔数据从
javascript发送到Django视图时,它被传递为“true”/“false”(小写)而不是“True”/“False”(大写).这会在我的应用程序中导致意外行为.例如:
vote.js
.... var xhr = { 'isUpvote': isUpvote }; $.post(location.href,xhr,function(data) { doSomething() }); return false; });
views.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管理页面时,“isUpvote”始终设置为True,无论是从javascript传递了true还是false.那么将javascript的“true / false”布尔值转换为Django的“True / False”值的最佳方法是什么?
谢谢!!
添加:::::
好吧,我添加了一些’print’行来检查我的视图中是否出错了:
print(vote.isUp) vote.isUp = isUpvote print(vote.isUp) vote.save()
结果:
True false //lowercase
然后当我检查我的Django@R_301_452@时,它被保存为“真实”!!!
所以我想这意味着,由于一些奇怪的原因,将低级别“假”保存为Django“True”值….
解决方法
试试这个.
from django.utils import simplejson def post(self,**kwargs): isUpvote = simplejson.loads(request.POST.get('isUpvote'))