今天再為demo專案加入一個新的功能,就是輸入地址,轉換為經緯度的功能;透過google map api提供的功能,讓我們很輕鬆的完成這個功能。
程式碼如下:
def address_to_location(request):
assert isinstance(request, HttpRequest)
address = request.GET['address']
encodeAddress = urllib.parse.urlencode({'address': address})
url = "https://maps.googleapis.com/maps/api/geocode/json?%s" % encodeAddress
try:
req = Request(url)
response = urllib.request.urlopen(req).readall().decode('utf-8')
jsongeocode = json.loads(response)
if jsongeocode['status'] == "OK":
longitude, latitude = jsongeocode['results'][0]['geometry']['location'].values()
else:
return HttpResponse(json.dumps({"status": "Fail"}),
content_type="application/json")
except urllib.error.HTTPError as e:
print(e.code)
print(e.read().decode("utf-8-sig"))
return HttpResponse(json.dumps({"status": "OK", "lat": latitude, "lng": longitude}),
content_type="application/json")
在本機完成這個功能後,接下來就是把整個專案部署到Azure上了,在部署過程中,參考了以下的文章,但看了一下整篇文章,都不是我想要的結果。
1.在 Azure 中使用 Django 建立 Web 應用程式
程式碼如下:
def address_to_location(request):
assert isinstance(request, HttpRequest)
address = request.GET['address']
encodeAddress = urllib.parse.urlencode({'address': address})
url = "https://maps.googleapis.com/maps/api/geocode/json?%s" % encodeAddress
try:
req = Request(url)
response = urllib.request.urlopen(req).readall().decode('utf-8')
jsongeocode = json.loads(response)
if jsongeocode['status'] == "OK":
longitude, latitude = jsongeocode['results'][0]['geometry']['location'].values()
else:
return HttpResponse(json.dumps({"status": "Fail"}),
content_type="application/json")
except urllib.error.HTTPError as e:
print(e.code)
print(e.read().decode("utf-8-sig"))
return HttpResponse(json.dumps({"status": "OK", "lat": latitude, "lng": longitude}),
content_type="application/json")
在本機完成這個功能後,接下來就是把整個專案部署到Azure上了,在部署過程中,參考了以下的文章,但看了一下整篇文章,都不是我想要的結果。
1.在 Azure 中使用 Django 建立 Web 應用程式
甚至想放棄Azure,想說改部署到 Heroku上,於是也看了這篇文章「Django Girls 學習指南 - Deploy」,但看著看著,好像突然懂了一些東西,就是不管部署到哪裡,都是要建立virtual environment,於是在VS 2015上,把Python environment重新設定,改為virtual environment...如下所示。
1.在Python Environments,點選右鍵,然後選擇Add Virtual Environment...
2.這時候,會彈出一個視窗,會依您的系統當初安裝的Python版本,給予選擇,雖然Azure上不支援上傳64bits的virtual environment,但按下Add後,Visual studio會自動安裝同版本的32bits環境,做到這邊,已經完成80%,接下來只要將專案檔發行到Azure就完成了。
3.在專案當點滑鼠右鍵,選擇 Publish
4.接下來,選擇Microsoft Azure Web App,再按以下步驟完成即可。
5.登入Microsoft Azure帳戶,新增Web Apps
6.選擇 Web Deploy後,接下來就是一直點選下一步即可完成,如以下圖片所示。
7.完成後的畫面
沒有留言:
張貼留言