2013-06-26 3 views
3

클라이언트 측 파이썬 스크립트를 사용하여 장고 서버에 연결하려고합니다. 지금은보기에 연결하고 HttpResponse를 검색하려고합니다. 파이썬의 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!") 

여기서 알 수 있듯이 매우 직설적입니다.

EDIT : 내부 오류가 csrf 토큰 누락으로 인해 발생했는지 여부를 테스트했지만 csrf_exempt 데코레이터가 오류를 해결하지 못했습니다.

+0

브라우저에서'http : // localhost : 8000/minion/serve? name = bob'을 시도하고 어떤 일이 발생하는지 확인하십시오. – karthikr

+0

'urlopen '에'data'를 전달하십시오. – That1Guy

+0

잘 작동하는 @karthikr 출력은 이전과 같은 오류 메시지를 반환하는 – avorum

답변