0% encontró este documento útil (0 votos)
119 vistas4 páginas

Python CGI

Este documento proporciona ejemplos de cómo crear páginas web dinámicas utilizando Python CGI (Common Gateway Interface). El primer ejemplo muestra un simple "Hola Mundo" en Python CGI. El segundo ejemplo presenta un formulario HTML que recopila datos de entrada y los muestra en una página de resultados generada por un script Python CGI. El tercer ejemplo explica cómo crear una aplicación de consulta bibliográfica utilizando Python CGI, JavaScript y JSON para recuperar y mostrar datos de una base de datos de referencias bibliográficas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
119 vistas4 páginas

Python CGI

Este documento proporciona ejemplos de cómo crear páginas web dinámicas utilizando Python CGI (Common Gateway Interface). El primer ejemplo muestra un simple "Hola Mundo" en Python CGI. El segundo ejemplo presenta un formulario HTML que recopila datos de entrada y los muestra en una página de resultados generada por un script Python CGI. El tercer ejemplo explica cómo crear una aplicación de consulta bibliográfica utilizando Python CGI, JavaScript y JSON para recuperar y mostrar datos de una base de datos de referencias bibliográficas.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

Primer Ejemplo

HolaMundo.py

#!/usr/bin/python
print ("Content-Type: text/html\n\n")
print ("<html><h1>Holaaaaa mundo de CGI python</h1></html>")

Segundo Ejemplo
form_second.html

<form action = "/cgi-bin/second.py" method = "get">


Nombre: <input type = "text" name = "first_name"> <br />

Apellido: <input type = "text" name = "last_name" /> <br />


<input type = "submit" value = "Enviar" />
</form>

cgi-bin/second.py

#!/usr/bin/python

# Import modules for CGI handling


import cgi, cgitb

# Create instance of FieldStorage


form = cgi.FieldStorage()

# Get data from fields


first_name = form.getvalue('first_name')
last_name = form.getvalue('last_name')

print ("Content-Type: text/html\n\n")


print ("<html><head><title>Hola - Segundo programa CGI</title></head><body>")
print ("<h2>Holaaaaa %s %s</h2>" % (first_name, last_name))
print ("</body></html>")
Python CGI
Ejemplo de la consulta bibliográfica

En esta práctica recordaremos el ejemplo de la consulta bibliográfica visto en el primer curso,


pero esta vez usaremos Python y Ajax.

El servidor
Para esta práctica usaremos el servidor disponible en python al que iniciaremos con la opción
de que ejecute CGIs
python3​ -m ​http.server​ --cgi 8000

Los CGIs hechos en python deberán ser ejecutables y estar dentro del directorio ​cgi-bin

Base de datos
La información se leerá de un archivo de texto plano:
[1] J. Glenn Brookshear, Computer Science: An Overview 11th Edition;
Prentice Hall; January 31, 2011.
[2] Jacqueline D. Hamilton, CGI Programming 101: Programming Perl for the
World Wide Web Second Edition; http://www.cgi101.com/; 2004.
[3] Nick Parlante, Essential perl; http://cslibrary.stanford.edu/108/;
2002.
[4] Web-building tutorials; http://www.w3schools.com/; 2013.
[5] S. Haber & W.S. Stornetta, Secure names for bit-strings; In
Proceedings of the 4th ACM Conference on Computer and Communications
Security; pages 28-35, April; 2004.

Diccionarios
En Python los diccionarios, arreglos asociativos o mapas se crean usando llaves
dict = {
"bart" : "Yo no lo hice!",
"homer" : "Donnas",
"lisa" : "El significado de la vida?"
}
Los valores se pueden extraer usando corchetes
string = dict["bart"]

También es posible cambiar el valor asociado a una clav


dict["homer"] = "Mmmm, scalars"

Es posible extraer todas las claves de un diccionario usando el método ​keys()​, que devolverá
un objeto iterable de tipo ​dict_keys
claves = dict.keys()

for key in dict.keys():


print(key)

El formulario para la consulta.html


Para permitir que el usuario pueda hacer la consulta se usará el siguiente formulario
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="estilo.css">
<script src=”consulta.js”></script>
<title>Consultas a la bibliografía</title>
</head>
<body>
<form name=”myform”>
<fieldset>
<legend>Búsqueda biblográfica por:</legend>
<select name="kind">
<option value="author"> autor <br>
<option value="title"> título <br>
<option value="year"> año <br>
</select>
<input type="text" name="keyword"><br>
<button onclick="query(document.myform.kind.value, document.myform.keyword.value)”>
Consultar
</button>
</fieldset>
</form>
<div>
</body>
</html>

Usted es libre de agregar crear la hoja de estilo que considere adecuada.


El CGI consulta.py
El CGI que procesa la consulta tendrá el siguiente código
#!/usr/bin/python3
import re
import json

def matchLine(line):
dic = {}
x = re.search("^\[([0-9]+)\] ((.+), )?(.+); ((.+)|(http.+));(.+)\.", line)
dic["number"] = x.group(1)
dic["author"] = x.group(3)
dic["title"] = x.group(4)
dic["editor"] = x.group(5)
dic["year"] = x.group(8)
return dic

f = open("bibliografia.txt")
data = []
for line in f:
dic = matchLine(line)
data.append(dic)
print("Content-Type: application/json\n\n")
print(json.dumps(data))

También podría gustarte