我想向服务器发送一个值。我使用以下方式发送它:
$.post("http://127.0.0.1:8000/search/",{'long':"30"});
我的 views.py 是:
def search(request):
lon = request.POST.get('long','')
place = Places.objects.filter(longtitude__icontains=lon)
if place is not None:
return render_to_response('sr.html', {'place': place, 'query': lon})
else:
return HttpResponse("NOTHING FOUND")
但我无法在数据库中搜索经度为30的地方!!!!
答案 0 :(得分:2)
filter()
会返回 queryset ,而不是单个项目。因此,您调用place
的变量将不是Places对象,而是包含一个或多个位置的查询集。
例如,如果您的模板具有{{ place.name }}
之类的内容,则不会打印任何内容,因为查询集没有name
属性。
假设最终会有几个具有相同经度的地方,您需要使用{% for place in places %}
循环遍历模板中的查询集。
答案 1 :(得分:0)
你确定你甚至在调用这个函数吗?
我会尝试打印出每个值,包括地点。由于Place.objects.filter不能返回None,因此您应该获得某种查询集,即使它是空的。
老实说,这段代码一般都是错误的......如果Places.longtitude真的是一个字符串,那将会有所帮助,如果它是一个字符串,为什么你决定这样做呢?
因为地方永远不能是无,你想检查一个空的查询集,在这种情况下你会写吗
if not place:
我认为我们需要更多信息,然后您已经给我们提供帮助了。
答案 2 :(得分:0)
DR现场,但遗漏了一点。当你在jQuery中执行此调用时,会遇到一个巨大的缺点,就是不能使用Django模板语言。当您编写普通视图时,您将完全像DR解释的那样。但是,由于您使用javascript执行此操作,因此您需要执行两项操作。
place.name
。答案 3 :(得分:0)
删除jquery中的'around long
$.post("http://127.0.0.1:8000/search/",{'long':"30"});
应该是
$.post("http://127.0.0.1:8000/search/",{long:"30"});
您的观点永远不会在请求中看到'long'。使用jquery post方法和django可能会让人感到困惑,因为{}之间的内容结构不同。