CherryPy - Caja de herramientas

Dentro de CherryPy, las herramientas integradas ofrecen una única interfaz para llamar a la biblioteca CherryPy. Las herramientas definidas en CherryPy se pueden implementar de las siguientes formas:

  • Desde los ajustes de configuración
  • Como decorador de Python o mediante el atributo especial _cp_config de un controlador de página
  • Como un Python invocable que se puede aplicar desde cualquier función

Herramienta de autenticación básica

El propósito de esta herramienta es proporcionar autenticación básica a la aplicación diseñada en la aplicación.

Argumentos

Esta herramienta utiliza los siguientes argumentos:

Nombre Defecto Descripción
reino N / A Cadena que define el valor del reino.
usuarios N / A Diccionario de la forma - nombre de usuario: contraseña o una función invocable de Python que devuelve dicho diccionario.
cifrar Ninguna Python invocable utilizado para cifrar la contraseña devuelta por el cliente y compararla con la contraseña cifrada proporcionada en el diccionario de usuarios.

Ejemplo

Tomemos un ejemplo para entender cómo funciona:

import sha
import cherrypy

class Root:
@cherrypy.expose
def index(self):

return """
<html>
   <head></head>
   <body>
      <a href = "admin">Admin </a>
   </body>
</html>
""" 

class Admin:

@cherrypy.expose
def index(self):
return "This is a private area"

if __name__ == '__main__':
def get_users():
# 'test': 'test'
return {'test': 'b110ba61c4c0873d3101e10871082fbbfd3'}
def encrypt_pwd(token):

return sha.new(token).hexdigest()
   conf = {'/admin': {'tools.basic_auth.on': True,
      tools.basic_auth.realm': 'Website name',
      'tools.basic_auth.users': get_users,
      'tools.basic_auth.encrypt': encrypt_pwd}}
   root = Root()
root.admin = Admin()
cherrypy.quickstart(root, '/', config=conf)

los get_usersLa función devuelve un diccionario codificado pero también obtiene los valores de una base de datos o de cualquier otro lugar. El administrador de la clase incluye esta función que hace uso de una herramienta de autenticación incorporada de CherryPy. La autenticación cifra la contraseña y el ID de usuario.

La herramienta de autenticación básica no es realmente segura, ya que un intruso puede codificar y decodificar la contraseña.

Herramienta de almacenamiento en caché

El propósito de esta herramienta es proporcionar almacenamiento en caché de contenido generado por CherryPy.

Argumentos

Esta herramienta utiliza los siguientes argumentos:

Nombre Defecto Descripción
métodos_ inválidos ("POST", "PUT", "BORRAR") Las tuplas de cadenas de métodos HTTP no se deben almacenar en caché. Estos métodos también invalidarán (eliminarán) cualquier copia en caché del recurso.
cache_Class Memoria caché Objeto de clase que se utilizará para el almacenamiento en caché

Herramienta de decodificación

El propósito de esta herramienta es decodificar los parámetros de la solicitud entrante.

Argumentos

Esta herramienta utiliza los siguientes argumentos:

Nombre Defecto Descripción
codificacion Ninguna Busca el encabezado de tipo de contenido
Codificación_predeterminada "UTF-8" Codificación predeterminada que se utilizará cuando no se proporcione ni se encuentre ninguna.

Ejemplo

Tomemos un ejemplo para entender cómo funciona:

import cherrypy
from cherrypy import tools

class Root:
@cherrypy.expose
def index(self):

return """ 
<html>
   <head></head>
   <body>
      <form action = "hello.html" method = "post">
         <input type = "text" name = "name" value = "" />
         <input type = ”submit” name = "submit"/>
      </form>
   </body>
</html>
"""

@cherrypy.expose
@tools.decode(encoding='ISO-88510-1')
def hello(self, name):
return "Hello %s" % (name, )
if __name__ == '__main__':
cherrypy.quickstart(Root(), '/')

El código anterior toma una cadena del usuario y redirigirá al usuario a la página "hello.html" donde se mostrará como "Hola" con el nombre dado.

La salida del código anterior es la siguiente:

hello.html