我想用客戶端python腳本連接到我的Django服務器。現在我只是試圖連接到一個視圖,並檢索HttpResponse。細如何使用Python的urllib編碼POST數據
import urllib2
import urllib
url = "http://localhost:8000/minion/serve"
request = urllib2.Request(url)
response = urllib2.urlopen(request)
html = response.read()
print html
以下工作但是如果我將其更改爲
import urllib2
import urllib
url = "http://localhost:8000/minion/serve"
values = {'name': 'Bob'}
data = urllib.urlencode(values)
request = urllib2.Request(url, data)
response = urllib2.urlopen(request)
html = response.read()
print html
我得到urllib2.HTTPError: HTTP Error 500: INTERNAL SERVER ERROR
。我在這裏做錯了什麼?這裏是我試圖遵循的教程,http://techmalt.com/?p=212http://docs.python.org/2/howto/urllib2.html。
編輯:試圖進行以下更改按That1Guy的建議(其他線路左同)
request = urllib2.Request(url, data)
response = urllib2.urlopen(request, data)
這像以前一樣返回相同的錯誤消息。
編輯:它似乎工作,如果我改變我正在查看的頁面,所以錯誤不在客戶端腳本。因此,鑑於這一啓示,以下是正在訪問的服務器端視圖:
def serve(request):
return HttpResponse("You've been served!")
正如您所看到的,它非常直截了當。
編輯:經過測試以查看是否可能由於缺少csrf標記而導致內部錯誤,但csrf_exempt裝飾器未能解決錯誤。
在您的瀏覽器中,嘗試'http:// localhost:8000/minion/serve?name = bob'並查看會發生什麼 – karthikr
將'data'傳遞給'urlopen'。 – That1Guy
@karthikr工作正常,給出預期的輸出 – avorum