我有一个非常简单的 Django 表单,它包含一个字段 - “地址”:
class AddressSearchForm(forms.Form):
"""
A form that allows a user to enter an address to be geocoded
"""
address = forms.CharField()
我可能甚至不需要使用表格,因为我没有保存这些数据——我只是收集它以用于搜索。但是,我想执行验证:
def clean_address():
data = self.cleaned_data
g = geocoders.Google()
try:
place, (lat,lng) = g.geocode(data['address'])
except (GQueryError):
raise forms.ValidationError('Please enter a valid address')
except (GeocoderResultError, GBadKeyError, GTooManyQueriesError):
raise forms.ValidationError('There was an error geocoding your address. Please try again')
except:
raise forms.ValidationError('An unknown error occured. Please try again')
此外,我想使用此地理编码结果将 Point 对象传递给我的视图:
from django.contrib.gis.geos import Point
point = Point(lng, lat)
我的问题是,如何将地址和点数据都传递给我的视图?我可以只传递地址,然后在视图中重新进行地理编码,但这将是重复代码。那么,如何从表单中传递点对象呢?我应该使用隐藏字段吗?其他建议?提前致谢。