2012-08-09 2 views
3

내 질문은 Google Maps JavaScript API와 관련이 있습니다. 더 구체적으로 자동 완성 기능.Django - 장고보기에 js 변수 전달

자동 완성 기능을 테스트 사이트로 검색 막대로 추가했는데 제대로 작동하지만 이제 선택한 매개 변수를 장고보기에 전달하려고합니다. 그리고 여기 나는 붙어있다.

<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)) 

내가하고 싶은 것은 변수 '에 변수'장소 '를 전달하는 것입니다

내가 내 템플릿에 무엇을 가지고 위치 '내 장고보기 (var 장소는 위도와 경도를 포함해야합니다, 그리고 내가 더 Geodjango에서 사용하고 싶습니다). request.POST은 다음을 제공합니다. <QueryDict: {u'csrfmiddlewaretoken': [u'4xp3nNwzeITb1zHhkBkSGlZSPtGwmuMB']}>하지만이 방법을 사용할 수 없습니다.

var 장소의 내용을 장고보기로 전달할 수 있습니까?

의견에 감사드립니다.

편집 : 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) 

이 아직도 scriptvar place에 액세스 할 수있는 방법을 찾고. 이것이 가능한가?

+1

숨겨진 필드를 만들고 javascript를 사용하여 값을'place'로 설정하십시오. 폼의 submit 버튼에 jquery를 사용하여 이것을 populate 할 수 있습니다. –

+0

@ 부르 칸 박사가 말한 바. 자바 스크립트를 사용하여 양식에 장소 값을 가져와야합니다. 양식을 제출하면 장고보기로 전송되며 동일한 방식으로 액세스 할 수 있습니다. 'request.POST.get ('place ') '. –

+0

답장은 Thx입니다. 스크립트의 끝 부분에 다음을 추가했습니다 :'document.getElementById ('place'). value = autocomplete.getPlace();'폼에'input id = "place "name ="place "type ="text "/>'. 그러나 '장소'필드의 값은 비어 있습니다. 이것은 폼이 제출되기 전에'var place '가 계산되지 않기 때문입니까? –

답변

3

먼저 검색 입력에 name 속성을 추가하십시오. id과 같은 searchTextField이라고 가정 해 보겠습니다. 그런 다음 request.POST.get('searchTextField')을 할 수 있습니다.

+0

답장은 Thx입니다. 실제로 어제 저녁 나는 필드 이름을 바탕으로 해결 방법을 만듭니다. 내 업데이 트를 참조하십시오. 그러나 여전히'스크립트'에서'var 장소'에 접근하는 방법을 찾고있다. –