CherryPy - Boîte à outils

Dans CherryPy, les outils intégrés offrent une interface unique pour appeler la bibliothèque CherryPy. Les outils définis dans CherryPy peuvent être implémentés des manières suivantes -

  • À partir des paramètres de configuration
  • En tant que décorateur Python ou via l'attribut spécial _cp_config d'un gestionnaire de page
  • En tant que Python appelable qui peut être appliqué à partir de n'importe quelle fonction

Outil d'authentification de base

Le but de cet outil est de fournir une authentification de base à l'application conçue dans l'application.

Arguments

Cet outil utilise les arguments suivants -

Nom Défaut La description
domaine N / A Chaîne définissant la valeur du domaine.
utilisateurs N / A Dictionnaire de la forme - username: mot de passe ou une fonction appelable Python renvoyant un tel dictionnaire.
Crypter Aucun Python appelable utilisé pour chiffrer le mot de passe renvoyé par le client et le comparer avec le mot de passe chiffré fourni dans le dictionnaire des utilisateurs.

Exemple

Prenons un exemple pour comprendre comment cela fonctionne -

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)

le get_usersLa fonction renvoie un dictionnaire codé en dur, mais récupère également les valeurs d'une base de données ou n'importe où ailleurs. L'administrateur de classe inclut cette fonction qui utilise un outil d'authentification intégré de CherryPy. L'authentification crypte le mot de passe et l'ID utilisateur.

L'outil d'authentification de base n'est pas vraiment sécurisé, car le mot de passe peut être encodé et décodé par un intrus.

Outil de mise en cache

Le but de cet outil est de fournir une mise en cache mémoire du contenu généré par CherryPy.

Arguments

Cet outil utilise les arguments suivants -

Nom Défaut La description
invalid_methods ("POST", "PUT", "DELETE") Tuples de chaînes de méthodes HTTP à ne pas mettre en cache. Ces méthodes invalideront également (supprimeront) toute copie mise en cache de la ressource.
cache_Class MemoryCache Objet de classe à utiliser pour la mise en cache

Outil de décodage

Le but de cet outil est de décoder les paramètres de la requête entrante.

Arguments

Cet outil utilise les arguments suivants -

Nom Défaut La description
codage Aucun Il recherche l'en-tête de type de contenu
Default_encoding «UTF-8» Codage par défaut à utiliser quand aucun n'est fourni ou trouvé.

Exemple

Prenons un exemple pour comprendre comment cela fonctionne -

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(), '/')

Le code ci-dessus prend une chaîne de l'utilisateur et il redirigera l'utilisateur vers la page "hello.html" où il sera affiché comme "Bonjour" avec le nom donné.

La sortie du code ci-dessus est la suivante -

hello.html