notifications Notificaciones

Marcar todas como leídas

Ver más

Obtén acceso ilimitado a éste y todos nuestros cursos con tu suscripción Premium

WSGI python

Abrir temario playlist_play

Lo lees en 2 Min.

Si eres un desarrollador Python y quieres comenzar a crear tus propios proyectos web, déjame decirte que puedes comenzar desde el ya si la necesidad de instalar ningún tipo de framewok o librería. ¿Cómo es esto posible? 🤔, deja te cuento.

La comunidad web Python ha creado un estándar llamado Web Server Gateway Interface, o por sus siglas, WSGI. Este standar nos permite escribir programas los cuales puedan comunicarse a través del protocolo HTTP, es decir, Internet.

WSGI se encuentra inspirado en el estándar Common Gateway Interface o CGI.

Cuando escribimos un programa siguiendo el standar SWGI dicho programa podrá ejecutarse en un servidor web tal como Apache o nginix.

Hola Mundo

Ahora vamos a crear nuestro primer Hola mundo utilizando el estándar WSGI.

from wsgiref.simple_server import make_server

def application(environ, start_response):
    headers = [('Content-type', 'text/plain; charset=utf-8')]

    start_response('200 OK', headers)

    return ['Hola gente de códigofacilito'.encode('utf-8')]

server = make_server('localhost', 8000, application)
server.serve_forever()

Listo, con 11 líneas de código tenemos un servidor que es capaz de responder a las peticiones de diferentes clientes.

Si nosotros ejecutamos nuestro script, e ingresamos a http://localhost:8000/ a través de nuestro navegador obtendremos el siguiente resultado :

Lo primero que debemos hacer es importar la función make_server, a partir de esta función podremos generar nuestro servidor.

La función recibe tres argumentos obligatorios, La dirección del servidor, el puerto y la _función handler. La función como observamos posee dos parámetros environ y start_response.

  • El parametro env es un diccionarion el cual contiene variables wsgi relacionadas con la petición del cliente (Método del protocolo, Query String etc ...)

  • El parametro start_response es un callback el cual recibe, de forma obligatoria, dos argumentos. El estatus y los encabezados de la respuesta.

Dentro de la función definimos los encabezados de la respuesta, de igual forma indicamos el status code, en este caso 200, exito 😎, finalmente retornamos un recurso. Para este ejemplo hemos retornado un pequeño string.

Páginas web

Si nosotros así lo deseamos podemos retornar una páginas web. 😃

from wsgiref.simple_server import make_server

HTML = """
<!DOCTYPE html>
<html>
  <head>
    <title>Título</title>
  </head>
  <body>
    <h1>Hola gente de códigofacilito</h1>
  </body>
</html>
"""

def application(environ, start_response):
    headers = [ ('Content-type', 'text/html; charset=utf-8') ]

    start_response('200 OK', headers)

    return [bytes(HTML, 'utf-8')]

server = make_server('localhost', 8000, application)
server.serve_forever()

Páginas dinámicas

Con la ayuda de la librería Jinja2 podemos crear páginas web dinámicas. Su integración es muy sencilla.

En esta ocasión genero un archivo .html que será nuestro template. En mi caso, el archivo lo almaceno en el folder templates.

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title> {{ title }} </title>
  </head>
  <body>
    <h1>Hola {{ username }}</h1>
  </body>
</html>

Una maquetado bastante sencillo, pero funcionará.

Mi script principal quedaría de la siguiente manera.

from jinja2 import FileSystemLoader, Environment
from wsgiref.simple_server import make_server

def application(environ, start_response):
    env = Environment(loader=FileSystemLoader("templates"))
    template = env.get_template('template.html')

    data = {
        'title': 'WSGI tutorial',
        'username': 'Codi'
    }

    html = template.render(data)

    headers = [ ('Content-type', 'text/html; charset=utf-8') ]

    start_response('200 OK', headers)

    return [bytes(html, 'utf-8')]

server = make_server('localhost', 8000, application)
server.serve_forever()

Lo primero que hacemos es obtener nuestro template, nuestro archivo .html, posteriormente lo renderizamos utilizando un diccionario como argumento, en el diccionario colocamos todos los valores a utilizar en el template.


Acerca del curso

Por su sintaxis elegante y clara, además del amplio campo de trabajo, Python se ha convertido en uno de los lenguajes más populares de la actualidad. Hoy, Python es utilizado en múltiples áreas del Desarrollo de Software, desde introducción a la programación, educación en universidades, hasta inteligencia artificial, minado de datos, visión computacional, análisis de imágenes y por supuesto desarrollo web.

Muchísimas empresas alrededor del mundo usan Python para crear aplicaciones web, algunas de las más populares son Instagram, Duolingo, Google, entre otros más.

Este curso te enseña a crear aplicaciones web con Python, a través del popular framework Flask. Durante el curso aprenderás los fundamentos del desarrollo web, comunicación con base de datos, autenticación, buenas prácticas de desarrollo, cómo usar el framework Flask y mucho más.

Al finalizar, tendrás los fundamentos y conocimientos para poder crear tus propias aplicaciones web usando Python, además de una base sólida de cómo trabajar en proyectos web con éste lenguaje.