2016-11-01 11 views
0

私はかなり新しいdjangoだし、私は非常に単純なアプリケーションを構築していた。ユーザーはテキストボックスに場所を入力し、Googleマップからその場所の座標を取り出して次のページに印刷します。これまではJSONファイルで他の多くの情報とともに座標を取得することができました。私は緯度と経度を正常に分離し、それらを別々の変数に格納しました。私はそれらを印刷することができません。 1つの値だけが印刷されます。誰かが私にこれを手伝ってもらえますか?これは私がこれまでに書かれたものです: 私のviews.py:1つのDjango HttpResponseで2つの変数を返すにはどうすればよいですか?

from django.shortcuts import render 
from django.http import HttpResponse, HttpResponseRedirect 
import requests 
import json 
# Create your views here. 


def homepage(request): 
    if request.method == 'GET': 
     return render(request, 'geog/homepage.html') 

    if request.method == 'POST': 
     string = request.POST['location'] 
     maps_url = "http://maps.googleapis.com/maps/api/geocode/json?address="+string 
     json_string = requests.get(maps_url).content 
     json_dict = json.loads(json_string) 
     lat = json_dict['results'][0]['geometry']['location']['lat'] 
     lng = json_dict['results'][0]['geometry']['location']['lng'] 
     return HttpResponse(lat, lng) #It only prints lat, does not print lng 

は私のHTML:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>geog</title> 
</head> 
<body> 
<form action="" method="POST"> {% csrf_token %} 
    <input type="text" name='location'/> 
    <button type="submit">submit</button> 
</form> 
</body> 
</html> 
+0

値とプットの両方で1つの文字列を作成することでしょう'httpResponse()'で '' render() 'を、また別のhtmlファイルと' 'lat、lng''を引数として(' h {{lat}} '' {{lng}} ') – furas

+0

レンダリングを使用するには、新しいテンプレートと新しいURLを作成する必要があります。弦のアイデアはよりよく聞こえる – DeA

答えて

0

それは

# this will return a json object with a lat and lng property which have the desired values 
return HttpResponse(json.dumps({"lat":lat, "lng":lng}), content_type="application/json") 
+0

この場合、django.http.JsonResponseの使用をお勧めします。 - https://docs.djangoproject.com/en/1.10/ref/request-response/#id4 –

関連する問題