Утилиты
Различные утилитарные функции, поставляемые с Werkzeug.
HTML-помощники
-
class werkzeug.utils.HTMLBuilder(dialect) -
Объект-помощник для генерации HTML.
По умолчанию существует два экземпляра этого класса. Один —
htmlэкземпляр, и второй —xhtmlэкземпляр для этих двух диалектов. Класс использует именованные параметры и позиционные аргументы для генерации небольших фрагментов HTML.Именованные параметры преобразуются в атрибуты XML/SGML, позиционные аргументы используются как дочерние элементы. Поскольку Python принимает позиционные аргументы перед именованными, для нескольких дочерних элементов рекомендуется использовать список со звёздочным синтаксисом:
>>> html.p(class_='foo', *[html.a('foo', href='foo.html'), ' ', ... html.a('bar', href='bar.html')]) u'<p class="foo"><a href="foo.html">foo</a> <a href="bar.html">bar</a></p>'Этот класс обходит некоторые ограничения браузера и не может использоваться для произвольной генерации SGML/XML. Для этой цели существуют библиотеки lxml и аналогичные.
Вызов билдера экранирует переданную строку:
>>> html.p(html("<foo>")) u'<p><foo></p>'
-
werkzeug.utils.escape(s, quote=None) -
Заменяет специальные символы «&», «<», «>» и («) на безопасные для HTML последовательности.
Существует специальная обработка для
None, которая экранирует её в пустую строку.Изменено в версии 0.9:
quoteтеперь неявно включён.Параметры: - s – строка, которую нужно экранировать.
- quote – игнорируется.
-
werkzeug.utils.unescape(s) -
Обратная функция
escape. Эта функция ра экранирует все HTML-сущности, а не только XML-сущности, вставленныеescape.Параметры: s – строка, которую нужно раэкранировать.
Общие помощники
-
class werkzeug.utils.cached_property(func, name=None, doc=None) -
Декоратор, преобразующий функцию в ленивую свойство. Функция, обернутая декоратором, вызывается в первый раз для получения результата, а затем этот вычисленный результат используется при каждом последующем обращении к значению:
class Foo(object): @cached_property def foo(self): # calculate something important here return 42Класс должен иметь
__dict__для работы этого свойства.
-
class werkzeug.utils.environ_property(name, default=None, load_func=None, dump_func=None, read_only=None, doc=None) -
Сопоставляет атрибуты запроса с переменными окружения. Это работает не только для объекта запроса Werzeug, но и для любого другого класса с атрибутом environ:
>>> class Test(object): ... environ = {'key': 'value'} ... test = environ_property('key') >>> var = Test() >>> var.test 'value'Если вы передадите второй параметр, он будет использоваться в качестве значения по умолчанию, если ключ не существует; третий параметр может быть преобразователем, который принимает значение и преобразует его. Если он вызывает
ValueErrorилиTypeError, используется значение по умолчанию. Если значение по умолчанию не указано, используетсяNone.По умолчанию свойство является только для чтения. Его необходимо явно включить, передав
read_only=Falseконструктору.
-
class werkzeug.utils.header_property(name, default=None, load_func=None, dump_func=None, read_only=None, doc=None) -
Аналогично
environ_property, но для заголовков.
-
werkzeug.utils.redirect(location, code=302, Response=None) -
Возвращает объект ответа (приложение WSGI), который, при вызове, перенаправляет клиента на указанный адрес. Поддерживаемые коды: 301, 302, 303, 305, 307 и 308. 300 не поддерживается, поскольку это не настоящее перенаправление, а 304, поскольку это ответ на запрос с определёнными заголовками If-Modified-Since.
Новое в версии 0.6: Адрес теперь может быть строкой Unicode, которая кодируется с помощью функции
iri_to_uri().Новое в версии 0.10: Теперь можно передать класс, используемый для объекта Response.
Параметры: - location – адрес перенаправления.
- code – код статуса перенаправления. По умолчанию 302.
-
Response (класс) – класс Response для использования при создании объекта ответа. По умолчанию
werkzeug.wrappers.Response, если не указано иное.
-
werkzeug.utils.append_slash_redirect(environ, code=301) -
Перенаправляет на тот же URL, но с добавленной слеш. Поведение этой функции не определено, если путь уже заканчивается слешем.
Параметры: - environ – среда WSGI для запроса, вызывающего перенаправление.
- code – код статуса для перенаправления.
-
werkzeug.utils.import_string(import_name, silent=False) -
Импортирует объект на основе строки. Это полезно, если вы хотите использовать пути импорта в качестве конечных точек или что-то подобное. Путь импорта можно указать в точечной нотации (
xml.sax.saxutils.escape) или с двоеточием в качестве разделителя объекта (xml.sax.saxutils:escape).Если
silentравно True, возвращаемое значение будетNoneв случае ошибки импорта.Параметры: - import_name – точечное имя импортируемого объекта.
-
silent – если установлено в
True, ошибки импорта игнорируются, и вместо этого возвращаетсяNone.
Возвращает: импортированный объект
-
werkzeug.utils.find_modules(import_path, include_packages=False, recursive=False) -
Ищет все модули под пакетом. Это может быть полезно для автоматического импорта всех представлений/контроллеров, чтобы их метаклассы/декораторы функций могли зарегистрировать себя в приложении.
Пакеты не возвращаются, если
include_packagesне равноTrue. Это также может рекурсивно перечислить модули, но в этом случае он импортирует все пакеты, чтобы получить правильный путь загрузки этого модуля.Параметры: - import_path – точечное имя пакета для поиска дочерних модулей.
-
include_packages – установите в значение
True, если также должны возвращаться пакеты. -
recursive – установите в значение
True, если должна происходить рекурсия.
Возвращает: генератор
-
werkzeug.utils.validate_arguments(func, args, kwargs, drop_extra=True) -
Проверяет, принимает ли функция аргументы и ключевые аргументы. Возвращает новый
(args, kwargs)кортеж, который безопасно можно передать в функцию, без возникновенияTypeErrorиз-за несовместимости сигнатуры функции. Еслиdrop_extraустановлено в значениеTrue(по умолчанию), любые дополнительные позиционные или ключевые аргументы автоматически отбрасываются.Возникшее исключение имеет три атрибута:
-
missing - Множество имён аргументов, которые ожидались функцией, но отсутствовали.
-
extra - Словарь ключевых аргументов, с которыми функция не может работать, но были предоставлены.
-
extra_positional - Список значений, переданных позиционными аргументами, но не принимаемыми функцией.
Это может быть полезно для декораторов, которые передают данные, предоставленные пользователем, в функцию представления:
from werkzeug.utils import ArgumentValidationError, validate_arguments def sanitize(f): def proxy(request): data = request.values.to_dict() try: args, kwargs = validate_arguments(f, (request,), data) except ArgumentValidationError: raise BadRequest('The browser failed to transmit all ' 'the data expected.') return f(*args, **kwargs) return proxyПараметры: - func – функция, по отношению к которой выполняется проверка.
- args – кортеж позиционных аргументов.
- kwargs – словарь ключевых аргументов.
-
drop_extra – установите в значение
False, если не хотите, чтобы дополнительные аргументы молча отбрасывались.
Возвращает: кортеж в форме
(args, kwargs). -
-
werkzeug.utils.secure_filename(filename) -
Принимает имя файла и возвращает безопасную версию. Это имя файла можно безопасно хранить в обычной файловой системе и передавать функции
os.path.join(). Возвращаемое имя файла — строка только с ASCII-символами для максимальной переносимости.В системах Windows функция также гарантирует, что файл не имеет имени одного из специальных устройств.
>>> secure_filename("My cool movie.mov") 'My_cool_movie.mov' >>> secure_filename("../../../etc/passwd") 'etc_passwd' >>> secure_filename(u'i contain cool \xfcml\xe4uts.txt') 'i_contain_cool_umlauts.txt'Функция может вернуть пустое имя файла. Вам необходимо убедиться, что имя файла уникально, и что вы прерываете процесс или генерируете случайное имя файла, если функция вернула пустое.
Новое в версии 0.5.
Параметры: filename – имя файла для защиты
-
werkzeug.utils.bind_arguments(func, args, kwargs) -
Связывает предоставленные аргументы в словарь. При передаче функции, кортежа аргументов и словаря ключевых аргументов
bind_argumentsвозвращает словарь имён, как если бы функция их видела. Это может быть полезно для реализации декоратора кэширования, который использует аргументы функции для построения ключа кэша на основе значений аргументов.Параметры: - func – функция, для которой должны быть связаны аргументы.
- args – кортеж позиционных аргументов.
- kwargs – словарь ключевых аргументов.
Возвращает: словарь
dictсвязанных ключевых аргументов.
Справочные материалы по URL
Обратитесь к Справочным материалам по URL.
Парсинг UserAgent
-
class werkzeug.useragents.UserAgent(environ_or_string) -
Представляет пользовательский агент. Передайте ему среду WSGI или строку пользовательского агента, и вы сможете просмотреть некоторые детали из строки пользовательского агента через атрибуты. Существуют следующие атрибуты:
-
string -
сырая строка пользовательского агента
-
platform -
платформа браузера. В настоящее время распознаются следующие платформы:
aixamigaandroidblackberrybsdchromeosdragonflybsdfreebsdhpuxipadiphoneirixlinuxmacosnetbsdopenbsdscosolarissymbianwiiwindows
-
browser -
название браузера. В настоящее время распознаются следующие браузеры:
-
aol* -
ask* -
baidu* -
bing* caminochromeedgefirefoxgaleon-
google* kmeleonkonquerorlinkslynxmozillamsiemsnnetscapeoperasafariseamonkeywebkit-
yahoo*
(Браузеры, помеченные звездочкой (
*), являются поисковыми роботами.) -
-
version -
версия браузера
-
language -
язык браузера
-
Справочные материалы по безопасности
Введено в версии 0.6.1.
-
werkzeug.security.generate_password_hash(password, method='pbkdf2:sha256', salt_length=8) -
Хэширует пароль с заданным методом и солью с заданной длиной строки. Формат возвращаемой строки включает метод, который был использован, чтобы
check_password_hash()мог проверить хэш.Формат хэшированной строки выглядит следующим образом:
method$salt$hash
Этот метод не может генерировать незасоленные пароли, но можно установить параметр method='plain', чтобы принудительно использовать пароли в виде простого текста. Если используется соль, внутри используется hmac для засоления пароля.
Если требуется PBKDF2, его можно включить, задав метод
pbkdf2:method:iterationsгде iterations – необязательно:pbkdf2:sha256:80000$salt$hash pbkdf2:sha256$salt$hash
Параметры: - password – пароль для хэширования.
-
method – метод хэширования для использования (поддерживаемый hashlib). Дополнительно может быть в формате
pbkdf2:<method>[:iterations]для активации PBKDF2. - salt_length – длина соли в символах.
-
werkzeug.security.check_password_hash(pwhash, password) -
проверяет пароль по заданному закодированному и хэшированному значению пароля. Для поддержки устаревших паролей без соли этот метод поддерживает пароли в виде простого текста, хэши md5 и sha1 (как с солью, так и без).
Возвращает
Trueесли пароль совпал,Falseв противном случае.Параметры: -
pwhash – хэшированная строка, подобная той, что возвращается
generate_password_hash(). - password – пароль в виде простого текста для сравнения с хэшем.
-
pwhash – хэшированная строка, подобная той, что возвращается
-
werkzeug.security.safe_str_cmp(a, b) -
Эта функция сравнивает строки приблизительно в постоянное время. Для этого требуется, чтобы длина по крайней мере одной строки была известна заранее.
Возвращает
Trueесли две строки равны, илиFalseесли они не равны.Введено в версии 0.7.
-
werkzeug.security.safe_join(directory, *pathnames) -
Безопасно объединяет ноль или более компонентов пути без доверия к базовому каталогу, чтобы избежать выхода за пределы базового каталога.
Параметры: - directory – доверенный базовый каталог.
- pathnames – компоненты пути без доверия, относящиеся к базовому каталогу.
Возвращает: Безопасный путь, в противном случае
None.
-
werkzeug.security.pbkdf2_hex(data, salt, iterations=150000, keylen=None, hashfunc=None) -
Подобно
pbkdf2_bin(), но возвращает строку в шестнадцатеричном формате.Введено в версии 0.9.
Параметры: - data – данные для вывода.
- salt – соль для вывода.
- iterations – количество итераций.
- keylen – длина результирующего ключа. Если не указано, используется размер дайджеста.
- hashfunc – функция хэширования для использования. Это может быть строковое имя известной функции хэширования или функция из модуля hashlib. По умолчанию используется sha256.
-
werkzeug.security.pbkdf2_bin(data, salt, iterations=150000, keylen=None, hashfunc=None) -
Возвращает двоичный дайджест для алгоритма хэширования PBKDF2
dataс заданнойsalt. Он итерируетсяiterationsраз и создаёт ключ длинойkeylenбайта. По умолчанию в качестве функции хэширования используется SHA-256; может быть предоставлен другой модуль hashlibhashfunc.Введено в версии 0.9.
Параметры: - data – данные для вывода.
- salt – соль для вывода.
- iterations – количество итераций.
- keylen – длина результирующего ключа. Если не указано, используется размер дайджеста.
- hashfunc – функция хэширования для использования. Это может быть строковое имя известной функции хэширования или функция из модуля hashlib. По умолчанию используется sha256.
© 2007–2020 Pallets
Licensed under the BSD 3-clause License.
https://werkzeug.palletsprojects.com/en/0.15.x/utils/