내 (벙어리) 문제에 대한 해결책을 발견하고 아래에 나열했습니다.environ [ 'QUERY_STRING']이 (가) 길이가 0 인 문자열을 반환하는 이유는 무엇입니까?
저는 Ubuntu 11.04에서 Python 2.7.1 이상을 사용하고 있습니다. 클라이언트/서버가 동일한 컴퓨터에 있습니다.
윙 디버거에서 서버 코드가 호출되고 있으며 한 번에 한 줄씩 코드를 처리 할 수 있다는 것을 알고 있습니다. 이 예에서는 22 바이트가 전송되었음을 압니다.
Parameter application/x-www-form-urlencoded
fname first
lname last
Source
Content-Type: application/x-www-form-urlencoded
Content-Length: 22 fname=first&lname=last
이 내가 사용하고 클라이언트 코드 :
<html>
<form action="addGraphNotes.wsgi" method="post">
First name: <input type="text" name="fname" /><br />
Last name: <input type="text" name="lname" /><br />
<input type="submit" value="Submit" />
</form>
</html>
는 그리고이 서버 코드 :
방화범 , 나는 인터넷 게시 탭에서이 데이터를 보았다import urlparse
def application(environ, start_response):
output = []
# the environment variable CONTENT_LENGTH may be empty or missing
try:
# NOTE: THIS WORKS. I get a value > 0 and the size appears correct (22 bytes in this case)
request_body_size = int(environ.get('CONTENT_LENGTH', 0))
except (ValueError):
request_body_size = 0
try:
# environ['QUERY_STRING'] returns ""
**values = urlparse.parse_qs(environ['QUERY_STRING'])**
except:
output = ["parse error"]
윙 디버거에서 데이터가 클라이언트에서 서버로 전달되고 있음을 확인했습니다 :
>>> environ['wsgi.input'].read()
'fname=first&lname=last'
문제가 생겼습니다. 나는 실수로 기록을 남겼다. 이것은 형식을 사용하는 코드이지만 AJAX를 사용하고 FORMS를 사용하면 시작할 때 추가하는 것을 중지하십시오. 자, 모든 것이 잘 작동합니다.
# When the method is POST the query string will be sent
# in the HTTP request body which is passed by the WSGI server
# in the file like wsgi.input environment variable.
request_body = environ['wsgi.input'].read(request_body_size)
values = parse_qs(request_body)
'환경'전체를 인쇄 해 보았습니까? –
자세한 내용은 편집 된 질문보기 – Jarek