2017-03-11 52 views
0

這可能看起來像一個非常簡單和愚蠢的問題,但我找不到一個方便的答案。
我試圖使用谷歌的Django的反向geocodding API,作爲網站解釋(在https://developers.google.com/maps/documentation/geocoding/start?csw=1#ReverseGeocoding)我應該發送到URL的請求:
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=<_api_key>
但我不能找到一個合適的方式來用django發送這個請求到google api。
對我來說,看起來很簡單的東西可以通過一些內置的django方法來實現,但我所能找到的只是要安裝的模塊。
如果沒有辦法,但安裝其中一個最好的其他python模塊?使用django發送http請求並獲得結果

+1

請嘗試http://docs.python-requests.org/en/master/ – chachan

回答

1

好了,最直接的辦法是安裝requests庫,只需撥打:

result = requests.get(your_link) 

你可以找到更多的信息(例如,如何進行身份驗證,使用cookies等,以及如何訪問數據庫)docsrequests庫編寫得非常好,非常直觀,使用簡單。相當多的聰明人和公司也使用它,所以它不是一個在週末剛剛被黑掉的半熟庫(截至目前,它在GitHub上有5269次提交和481個貢獻者)。

如果您絕對必須避免外部庫,爲什麼不嘗試urllib.request。這有點複雜,如果你更喜歡更高級的界面,甚至文檔本身都推薦使用requests。但你絕對可以用它完成工作。要開始,您可以閱讀docs關於如何使用它來獲取數據。請閱讀thread以獲取如何從urllib獲得的響應中提取json的示例。

0

我想也許你不完全理解Django的工作過程。 Django是一個Python web服務器框架。基本上,你的Django項目是這樣的:

  1. Django項目在一個無限循環的服務器上運行,等待用戶發送HTTP請求
  2. 用戶發送HTTP請求到服務器的一些參數
  3. Django的捕獲請求,解析參數,並根據參數,叫你寫一些Python代碼。(你在views.py寫這需要request作爲他們的第一個參數的函數)
  4. Python代碼做你想讓它什麼做,並且最後將HttpResponse返回給用戶。

在步驟4中,您的代碼可以執行任何您想要的操作。您可以訪問數據庫,也可以向Google發送HTTP請求以使用其API。

記住:Django是服務器框架。它收到 HTTP請求,不發送 HTTP請求。所以沒有內置的Django方法來做到這一點。

您應該找到一個發送HTTP請求的庫,並且requests是此作業的最佳選擇。