CherryPy - Панель инструментов
В CherryPy встроенные инструменты предлагают единый интерфейс для вызова библиотеки CherryPy. Инструменты, определенные в CherryPy, могут быть реализованы следующими способами:
- Из настроек конфигурации
- Как декоратор Python или через специальный атрибут _cp_config обработчика страницы
- Как вызываемый Python, который может применяться из любой функции
Базовый инструмент аутентификации
Цель этого инструмента - обеспечить базовую аутентификацию для приложения, разработанного в приложении.
Аргументы
Этот инструмент использует следующие аргументы -
название | По умолчанию | Описание |
---|---|---|
царство | Нет данных | Строка, определяющая значение области. |
пользователи | Нет данных | Словарь формы - имя пользователя: пароль или вызываемая функция 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 | ПамятьКэш | Объект класса, который будет использоваться для кеширования |
Инструмент декодирования
Цель этого инструмента - декодировать параметры входящего запроса.
Аргументы
Этот инструмент использует следующие аргументы -
название | По умолчанию | Описание |
---|---|---|
кодирование | Никто | Он ищет заголовок типа содержимого |
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