Django では、検索フィールドを取得して場所をジオコーディングし、距離でソートされたデータベースからリストを吐き出そうとしています。これまでのところ、Google が「アナーバー、MI」などの複数の結果フォームを返す場所を検索する場合を除いて、すべてが機能します。ValueError「正確に1つの目印が見つかりませんでした!(見つかった2.)」ここに私のviews.pyがあります
from django.shortcuts import render_to_response
from models import CampSite
from geopy import geocoders
from django.contrib.gis.geos import *
from django.contrib.gis.measure import D
from campsites.forms import SearchForm
from django.http import HttpResponseRedirect
def results(request):
query = request.GET['q']
g = geocoders.Google(resource='maps')
location, (lat, lon) = g.geocode(query)
pnt = fromstr("POINT(%s %s)" % (lon, lat))
distance_from_point = {'mi':'2000'}
results = CampSite.objects.filter(lonlat__distance_lte=(pnt,D(**distance_from_point))).distance(pnt).order_by('distance')
return render_to_response('results.html',{'location': location, 'lat': lat, 'lon': lon, 'results':results})
私がオンラインで見つけた一般的な解決策は、変更することでした
location, (lat, lon) = g.geocode(query)
に
location, (lat, lon) = g.geocode(query, exactly_one=False)
ただし、これにより、新しい ValueError「WKT EWKT および HEXEWKB として認識されない文字列または Unicode 入力」が生成されました。
これは、チュートリアル以外で行っている最初の django プロジェクトです。