wsgiscriptalias wsgidaemonprocess with win_amd64 whl mod_wsgi instalar how example cp36m cp36 ap24vc14 and python mod-wsgi

wsgidaemonprocess - Datos POST de Python usando mod_wsgi



wsgidaemonprocess example (2)

Esta debe ser una pregunta muy simple, pero parece que no puedo entenderlo.

Estoy usando apache + mod_wsgi para alojar mi aplicación Python, y me gustaría que el contenido de la publicación sea enviado en uno de los formularios; sin embargo, ni los valores del entorno ni sys.stdin contienen ninguno de estos datos. ¿Me das una mano rápida?

Editar: Probado ya:

  • environ ["CONTENT_TYPE"] = ''application / x-www-form-urlencoded'' (sin datos)
  • environ ["wsgi.input"] parece una forma plausible, sin embargo, tanto environ ["wsgi.input"]. read (), y environ ["wsgi.input"]. read (-1) devuelve una cadena vacía (sí , el contenido se ha publicado y environ ["request_method"] = "post"

PEP 333 dice que debe leer environ [''wsgi.input''] .

Acabo de guardar el siguiente código e hice que mod_wsgi de apache lo ejecutara. Funciona.

Debes estar haciendo algo mal.

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


Tenga en cuenta que técnicamente hablando, llamar a read () o read (-1) en wsgi.input es una violación de la especificación WSGI aunque Apache / mod_wsgi lo permita. Esto se debe a que la especificación WSGI requiere que se proporcione un argumento de longitud válido. La especificación WSGI también dice que no debe leer más datos de los especificados por CONTENT_LENGTH.

Por lo tanto, el código anterior puede funcionar en Apache / mod_wsgi pero no es un código WSGI portátil y fallará en algunas otras implementaciones de WSGI. Para ser correcto, determine la longitud del contenido de la solicitud y suministre ese valor a read ().