1

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

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

4

1 回答 1

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 
于 2013-09-17T20:21:46.113 回答