Учебники

CherryPy — Панель инструментов

В CherryPy встроенные инструменты предлагают единый интерфейс для вызова библиотеки CherryPy. Инструменты, определенные в CherryPy, могут быть реализованы следующими способами:

  • Из настроек конфигурации
  • Как декоратор Python или через специальный атрибут _cp_config обработчика страницы
  • Как вызываемый Python, который может быть применен из любой функции

Базовый инструмент аутентификации

Целью этого инструмента является обеспечение базовой аутентификации для приложения, разработанного в приложении.

аргументы

Этот инструмент использует следующие аргументы —

название По умолчанию Описание
область N / A Строка, определяющая значение области.
пользователи N / A Словарь в форме — имя пользователя: пароль или вызываемая функция Python, возвращающая такой словарь.
шифровать Никто Вызываемый Python используется для шифрования пароля, возвращаемого клиентом, и сравнения его с зашифрованным паролем, предоставленным в словаре пользователей.

пример

Давайте возьмем пример, чтобы понять, как это работает —

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)

Функция get_users возвращает жестко запрограммированный словарь, но также извлекает значения из базы данных или где-либо еще. Администратор класса включает эту функцию, которая использует встроенный в CherryPy инструмент аутентификации. Аутентификация зашифровывает пароль и идентификатор пользователя.

Базовый инструмент аутентификации не совсем безопасен, так как пароль может быть закодирован и расшифрован злоумышленником.

Инструмент кеширования

Цель этого инструмента — обеспечить кеширование памяти сгенерированного контента CherryPy.

аргументы

Этот инструмент использует следующие аргументы —

название По умолчанию Описание
invalid_methods («POST», «PUT», «DELETE») Кортежи строк HTTP-методов не должны кэшироваться. Эти методы также аннулируют (удаляют) любую кэшированную копию ресурса.
cache_Class MemoryCache Объект класса, который будет использоваться для кэширования

Инструмент декодирования

Цель этого инструмента — декодировать параметры входящего запроса.

аргументы

Этот инструмент использует следующие аргументы —

название По умолчанию Описание
кодирование Никто Он ищет заголовок типа контента
default_encoding «UTF-8» Кодировка по умолчанию, которая будет использоваться, когда ничего не предоставлено или не найдено.

пример

Давайте возьмем пример, чтобы понять, как это работает —

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

Приведенный выше код получает строку от пользователя и перенаправляет пользователя на страницу «hello.html», где она будет отображаться как «Hello» с указанным именем.

Вывод вышеуказанного кода выглядит следующим образом:

Инструмент декодирования

hello.html