Django Query不匹配

时间:2013-09-17 19:35:29

标签: python ajax django web

我有以下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)

当此代码段返回状态时,它会显示加利福尼亚州,这意味着状态值正确但查询未正确执行。我不知道发生了什么事。有什么想法吗?

1 个答案:

答案 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 
相关问题