Método POST de Google App Engine self.redirect ()

En GAE (Python), utilizando el marco de aplicación web, llamar a self.redirect (‘some_url’) redirige al usuario a esa URL a través del método GET. ¿Es posible hacer un (redireccionamiento) a través del método POST también con algunos parámetros?

Si es posible, ¿cómo?

¡Gracias!

Esto no es posible debido a que la mayoría de los clientes implementan la redirección [1]:

Sin embargo, la mayoría de las implementaciones de agente de usuario existentes tratan a 302 como si fuera una respuesta 303, realizando un GET en el valor de campo Ubicación, independientemente del método de solicitud original.

Por lo tanto, debe usar una solución alternativa (como simplemente llamar al método post () del RequestHandler) u olvidar la idea.

[1] http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.2

Puede pasar parámetros. Aquí hay un ejemplo:

Digamos que tiene una página principal y desea POSTAR a ‘/ success’. Por lo general, puede utilizar esta manera:

self.redirect('/sucess')

Pero si desea pasar algunos parámetros de la página principal a /success página /success , como el username de username por ejemplo, puede modificar el código para esto:

self.redirect('/sucess?username=' + username)

De esta manera, pasó con éxito el valor del username a la URL. En la página /success , puede leer y almacenar el valor utilizando esto:

username = self.request.get('username')

Por fin, puede hacer que su información favorita aparezca en la página /success usando este simple código:

self.response.out.write('You\'ve succeeded, ' + username + '!')

Pero , por supuesto, no es una forma segura de pasar la contraseña. Me gustaría que ayude.

Parece que hay una pregunta similar aquí: Google App Engine self.redirect post

La respuesta a esa pregunta recomienda usar urlfetch.fetch () para hacer la publicación.

 importar urllib

 form_fields = {
   "first_name": "Albert",
   "last_name": "johnson",
   "email_address": "Albert.Johnson@example.com"
 }
 form_data = urllib.urlencode (form_fields)
 headers = {'Content-Type': 'application / x-www-form-urlencoded'}
 resultado = urlfetch.fetch (url = url,
                         payload = form_data,
                         metodo = urlfetch.POST,
                         encabezados = encabezados)