我的問題涉及Google Maps JavaScript API。更具體的自動完成功能。Django - 將js變量傳遞給django視圖
我已經添加了自動完成功能作爲搜索欄到我的測試網站,這工作正常,但現在我想通過選擇的參數到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))
我想要做的是通過變量「地方」的變量「位置'在我的Django視圖中(var的地方應該包含lat和lon,並且這個我想在Geodjango中繼續使用)。 request.POST
給出以下內容:<QueryDict: {u'csrfmiddlewaretoken': [u'4xp3nNwzeITb1zHhkBkSGlZSPtGwmuMB']}>
但是,我不能使用。
是否可以將var地點的內容傳遞給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
。這可能嗎?
創建一個隱藏字段,並使用JavaScript將其值設置爲'place';並在表單的提交按鈕上使用jquery觸發填充。 – 2012-08-10 07:33:19
@布爾哈里德說了些什麼。您需要使用javascript來獲取表單中的位置值,然後當您提交表單時,它將被髮送到您的Django視圖,並且您可以用同樣的方式訪問它...'request.POST.get('place') '。 – 2012-08-10 22:31:14
Thx回覆。添加腳本的末尾我添加了以下內容:'document.getElementById('place')。value = autocomplete.getPlace();'並在'form'中插入了一個額外的輸入字段:''。但是'place'字段的值仍然是空的。這是因爲在提交表單之前不會計算'var place'? – 2012-08-11 07:40:07