use*_*270 8 javascript python django ajax jquery
我注意到当布尔数据从javascript发送到Django视图时,它被传递为"true"/"false"(小写)而不是"True"/"False"(大写).这会在我的应用程序中导致意外行为.例如:
vote.js
....
var xhr = {
'isUpvote': isUpvote
};
$.post(location.href, xhr, function(data) {
doSomething()
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
当我保存此投票并检查我的Django管理页面时,"isUpvote"始终设置为True,无论是从javascript传递了true还是false.那么将javascript的"true/false"布尔值转换为Django的"True/False"值的最佳方法是什么?
谢谢!!
添加:::::
好吧,我添加了一些'print'行来检查我的视图中是否有错误:
print(vote.isUp)
vote.isUp = isUpvote
print(vote.isUp)
vote.save()
Run Code Online (Sandbox Code Playgroud)
结果:
True
false //lowercase
Run Code Online (Sandbox Code Playgroud)
然后当我检查我的Django管理员时,它被保存为"真实"!!! 所以我想这意味着,由于一些奇怪的原因,将较低的"假"保存为Django"真实"值....
可能最好将'isUpvote'值作为字符串'true'或'false'并使用json来区分其布尔值
import json
isUpvote = json.loads(request.POST.get('isUpvote', 'false')) # python boolean
Run Code Online (Sandbox Code Playgroud)
尝试这个。
from django.utils import simplejson
def post(self, request, *args, **kwargs):
isUpvote = simplejson.loads(request.POST.get('isUpvote'))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9607 次 |
最近记录: |