В Java абсолютно нормально иметь объект, содержащий ссылки на объекты того же класса. Вы даже можете иметь ссылку на класс.
Это полезно для построения деревьев и списков объектов.
PEP 333 говорит, что необходимо читать, окружают ['wsgi.input'].
Я просто сохранил следующий код и заставил mod_wsgi апача выполнить его.Работает.
Необходимо делать что-то не так.
from pprint import pformat
def application(environ, start_response):
# show the environment:
output = ['<pre>']
output.append(pformat(environ))
output.append('</pre>')
#create a simple form:
output.append('<form method="post">')
output.append('<input type="text" name="test">')
output.append('<input type="submit">')
output.append('</form>')
if environ['REQUEST_METHOD'] == 'POST':
# show form data as received by POST:
output.append('<h1>FORM DATA</h1>')
output.append(pformat(environ['wsgi.input'].read()))
# send results
output_len = sum(len(line) for line in output)
start_response('200 OK', [('Content-type', 'text/html'),
('Content-Length', str(output_len))])
return output
Имейте в виду, что с технической точки зрения при вызове читается ( ) или чтение (-1) в wsgi.input является нарушением спецификации WSGI, хотя Apache / mod_wsgi это допускает. Это связано с тем, что спецификация WSGI требует предоставления аргумента допустимой длины. В спецификации WSGI также говорится, что вы не должны читать больше данных, чем указано в CONTENT_LENGTH.
Таким образом, приведенный выше код может работать в Apache / mod_wsgi, но он не является переносимым кодом WSGI и не будет работать в некоторых других реализациях WSGI. Чтобы быть правильным, определите длину содержимого запроса и передать это значение функции read ().