我有以下Django模型:
class State(models.Model):
name = models.CharField(max_length=80,null=False)
latitude = models.CharField(max_length=80,null=False)
longitude = models.CharField(max_length=80,null=False)
def __unicode__(self):
return self.name
在我的views.py文件中,我创建了以下方法:
def getCoords(request):
if request.is_ajax():
if request.method == 'POST':
try:
state = request.POST['state'] #receives the state from JS
stateInstance = State.objects.get(name=state)
stateLat = stateInstance.latitude
stateLong = stateInstance.longitude
data = {"lat" : stateLat, "long" : stateLong}
except State.DoesNotExist:
return HttpResponse("No record")
return HttpResponse(simplejson.dumps(data)) #returns json
所以我通过ajax发送这个方法一个参数,让我们说“加利福尼亚”。状态变量获取值(我已证明)但查询未执行,它返回的查询与消息不匹配。我也试过以下内容:
state = request.POST['state']
if state == 'California':
return HttpResponse("Yes!")
else:
return HttpResponse(state)
当此代码段返回状态时,它会显示加利福尼亚州,这意味着状态值正确但查询未正确执行。我不知道发生了什么事。有什么想法吗?
答案 0 :(得分:1)
确保您已连接到settings.py
中的正确数据库。确保记录确实存在于普通的旧SQL中。
SELECT * FROM [app_name]_state WHERE name = 'California';
另外,从Django shell试试吧。 python manage.py shell
>>> from [app_name].models import State
>>> s = State.objects.get(name='California')
>>> s
<State: California>
确保实际发送的内容作为POST发送,而不是意外地在URL中发送GET变量。此外,请确保post变量没有多余的字符,并且它实际上是有效的。一个不错的方法是将它打印到控制台,或者如果是AJAX,则使用Firebug。
# Single quotes added so you can see any extra spaces in the console
print "'%s'" % state