我的问题与Google Maps JavaScript API有关。更具体的自动完成功能。
我已将自动完成功能作为搜索栏添加到我的测试网站,这很好用,但现在我想将选择的参数传递给Django视图。在这里,我被困住了。
这就是我在模板中的内容:
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
function initialize() {
var input = document.getElementById('searchTextField');
var autocomplete = new google.maps.places.Autocomplete(input);
}
google.maps.event.addDomListener(window, 'load', initialize);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
});
</script>
<form method="post" action="">{% csrf_token %}
<input id="searchTextField" type="text" placeholder="Enter a location" autocomplete="on">
<input type="submit" value="Search" class="postfix button"/>
</form>
这在我看来:
def homepage(request):
if request.method == 'POST':
location = request.POST
else:
location = ''
return render_to_response('homepage.html', {'location':location}, context_instance = RequestContext(request))
我想要做的是将变量'place'传递给我的Django视图中的变量'location'(var place应包含lat和lon,我想在Geodjango中进一步使用)。 request.POST
给出了以下内容:<QueryDict: {u'csrfmiddlewaretoken': [u'4xp3nNwzeITb1zHhkBkSGlZSPtGwmuMB']}>
但我无法使用。
是否可以将var place的内容传递给django视图?
感谢您的反馈!
编辑: 我目前使用geopy的解决方法:
模板:
<input id="searchTextField" name="searchTextField" type="text" placeholder="Enter a location" autocomplete="on">
查看:
if request.method == 'POST':
location = request.POST.get('searchTextField')
gn = geocoders.Google()
place, (lat, lng) = gn.geocode(location)
仍在寻找一种方法来访问var place
中的script
。这可能吗?
答案 0 :(得分:3)
首先在搜索输入中添加name
属性。假设您将其称为searchTextField
,就像id
一样。然后你可以request.POST.get('searchTextField')
。