Ejecutar código Python desde un formulario HTML

Estoy creando un servidor web usando webpy y ahora mismo tengo un formulario simple y una clase especial que escribí. Quiero que el usuario pueda escribir código en el formulario y, si la entrada es una llamada de función, llame a la función que envió el usuario, de lo contrario, haga cualquier cosa con la entrada si no es una llamada de función. Creo que esto tendría que lograrse en algún lugar del archivo de plantilla. Cualquier ayuda seria apreciada

preguntado el 27 de julio de 12 a las 16:07

2 Respuestas

Si entiendo correctamente, está buscando una forma de ejecutar el código enviado por el cliente en el servidor, obteniendo información de un formulario.

Suponiendo que tiene una plantilla de formulario que se parece a esto (tenga en cuenta el nombre del elemento de área de texto):

<form method="POST">
<textarea name="code" />
<input type="submit">
</form>

querrá agregar un método POST a su clase de página para manejar la entrada y ejecutar el código:

class MyPage:
    def POST(self):
        data = web.input()
        eval(data.code)

Es no algo que debe hacer con un formulario al que puede acceder cualquier persona en la que no confíe por completo, ya que le brinda la capacidad de ejecutar cualquier código que desee en su servidor web (por ejemplo, podrían intentar eliminar fácilmente todos los archivos en el servidor) . Pero si está de acuerdo con los riesgos de seguridad o simplemente jugando, asegúrese de leer los documentos para Pythons eval para ver los otros argumentos que puede pasarle.

Respondido 27 Jul 12, 17:07

Creo que tengo problemas con la forma en que se implementa mi formulario, usando webpy renderizo parte del formulario en el servidor: my_form = web.form.Form(web.form.Textbox('code',class_='code',id='code') y en la plantilla: <form class="form" method="POST"> $:form.render() <input class="button" type="submit" value="send"/> </form> el primer parámetro del objeto web.form debe ser el nombre del formulario, pero cuando llamo a data.code, aparece un error de atributo: código - languidez

No importa, obtuve acceso al formulario ahora, solo tengo problemas de sintaxis y uso eval con webpy: languidez

Cree un script Python cgi y ejecútelo en cgi-bin de su servidor web. Aquí hay un tutorial. Luego, el script puede acceder a la entrada del formulario y hacer lo que quiera con él.

Respondido 27 Jul 12, 16:07

El módulo cgi también puede ser muy útil, especialmente para acceder a formularios. - user1557602

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.