Django Utils
Этот документ охватывает все стабильные модули в django.utils. Большинство модулей в django.utils предназначены для внутреннего использования, и только следующие части могут считаться стабильными и, следовательно, совместимыми с предыдущими версиями в соответствии с политикой внутренней деприкации релизов.
django.utils.cache
Этот модуль содержит вспомогательные функции для управления кэшированием. Он делает это, управляя заголовком Vary ответов. Он включает функции для непосредственной корректировки заголовка объектов ответов и декораторы, которые изменяют функции, чтобы сами выполнять эту корректировку заголовка.
Дополнительную информацию о заголовке Vary см. в RFC 7231#раздел-7.1.4.
По существу, заголовок Vary HTTP определяет, какие заголовки должен учитывать кэш при построении ключа кэша. Запросы с одинаковым путём, но с разным содержимым заголовков, указанных в Vary, должны получать разные ключи кэша, чтобы предотвратить доставку неправильного содержимого.
Например, среда локализации потребовала бы различать кэши по заголовку Accept-language.
-
patch_cache_control(response, **kwargs)[source] -
Эта функция исправляет заголовок
Cache-Controlпутём добавления всех аргументов ключевых слов в него. Преобразование выполняется следующим образом:- Все имена параметров ключевых слов преобразуются в нижний регистр, а подчёркивания заменяются дефисами.
- Если значение параметра равно
True(точноTrue, а не просто истинному значению), в заголовок добавляется только имя параметра. - Все остальные параметры добавляются со своим значением после применения
str()к нему.
-
get_max_age(response)[source] -
Возвращает максимальное время хранения из заголовка ответа Cache-Control в виде целого числа (или
Noneесли он не был найден или не был целым числом).
-
patch_response_headers(response, cache_timeout=None)[source] -
Добавляет некоторые полезные заголовки к заданному объекту
HttpResponse:ETagExpiresCache-Control
Каждый заголовок добавляется только в том случае, если он ещё не задан.
cache_timeoutсоставляет секунды. По умолчанию используется настройкаCACHE_MIDDLEWARE_SECONDS.Изменено в Django 1.11:В более ранних версиях также задавался заголовок
Last-Modified.Устарело начиная с версии 1.11: Поскольку настройка
USE_ETAGSустарела, эта функция не будет устанавливать заголовокETag, когда истечёт срок действия в Django 2.1.
-
add_never_cache_headers(response)[source] -
Добавляет заголовок
Cache-Control: max-age=0, no-cache, no-store, must-revalidateк ответу, чтобы указать, что страница не должна кешироваться.
-
patch_vary_headers(response, newheaders)[source] -
Добавляет (или обновляет) заголовок
Varyв данном объектеHttpResponse.newheaders- список имён заголовков, которые должны быть вVary. Существующие заголовки вVaryне удаляются.
-
get_cache_key(request, key_prefix=None)[source] -
Возвращает ключ кэша на основе пути запроса. Он может использоваться на стадии запроса, так как он извлекает список заголовков для учёта из глобального реестра путей и использует их для построения ключа кэша для проверки.
Если список заголовков не сохранён, страница должна быть перестроена, поэтому эта функция возвращает
None.
-
learn_cache_key(request, response, cache_timeout=None, key_prefix=None)[source] -
Определяет, какие заголовки нужно учитывать для некоторого пути запроса по объекту ответа. Он хранит эти заголовки в глобальном реестре путей, чтобы при последующем доступе к этому пути автоматически было известно, какие заголовки нужно учитывать, без построения самого объекта ответа. Заголовки указаны в заголовке
Varyответа, но мы хотим предотвратить генерацию ответа.Список заголовков, используемых для генерации ключа кэша, хранится в том же кэше, что и сами страницы. Если кэш удаляет данные из кэша, это означает, что нам нужно построить ответ один раз, чтобы получить заголовок Vary и, следовательно, список заголовков для использования в ключе кэша.
django.utils.dateparse
Функции, определённые в этом модуле, обладают следующими свойствами:
- Они поднимают исключение
ValueError, если их входные данные хорошо отформатированы, но не являются допустимой датой или временем. - Они возвращают
Noneесли они вообще не хорошо отформатированы. - Они принимают разрешение до пикосекунд ввода, но обрезают его до микросекунд, так как это поддерживается Python.
-
parse_date(value)[source] -
Парсит строку и возвращает
datetime.date.
-
parse_time(value)[source] -
Парсит строку и возвращает
datetime.time.Смещения UTC не поддерживаются; если
valueописывает одно, результат -None.
-
parse_datetime(value)[source] -
Парсит строку и возвращает
datetime.datetime.Смещения UTC поддерживаются; если
valueописывает одно, атрибутtzinfoрезультата - экземплярFixedOffset.
-
parse_duration(value)[source] -
Парсит строку и возвращает
datetime.timedelta.Ожидает данные в формате
"DD HH:MM:SS.uuuuuu"или как указано в ISO 8601 (например,P4DT1H15M20S, что эквивалентно4 1:15:20) или в формате интервала времени PostgreSQL (например,3 days 04:05:06).Изменено в Django 2.0:Была добавлена поддержка формата интервала PostgreSQL.
django.utils.decorators
-
method_decorator(decorator, name='')[source] -
Преобразует декоратор функции в декоратор метода. Он может быть использован для декорирования методов или классов; в последнем случае,
name- имя метода, который нужно декорировать, и он требуется.decoratorможет также быть списком или кортежем функций. Они обернуты в обратном порядке, так что порядок вызова - это порядок, в котором функции появляются в списке/кортеже.См. декорирование представлений на основе классов для примеров использования.
-
decorator_from_middleware(middleware_class)[source] -
Принимая класс middleware, возвращает декоратор представления. Это позволяет использовать функциональность middleware на основе представления. Middleware создаётся без передачи параметров.
Предполагается, что middleware совместим со старым стилем Django 1.9 и ранее (имея методы, такие как
process_request(),process_exception(), иprocess_response()).
-
decorator_from_middleware_with_args(middleware_class)[source] -
Как
decorator_from_middleware, но возвращает функцию, которая принимает аргументы, которые должны быть переданы middleware_class. Например, декораторcache_page()создан изCacheMiddlewareследующим образом:cache_page = decorator_from_middleware_with_args(CacheMiddleware) @cache_page(3600) def my_view(request): pass
django.utils.encoding
-
python_2_unicode_compatible()[source] -
Декоратор, который определяет методы
__unicode__и__str__в Python 2. В Python 3 он ничего не делает.Для поддержки Python 2 и 3 с одним кодовым основанием, определите метод
__str__, возвращающий текст (используйтеsix.text_type(), если вы выполняете преобразование типов), и примените этот декоратор к классу.
-
smart_text(s, encoding='utf-8', strings_only=False, errors='strict')[source] -
Возвращает объект
str, представляющийs. Обрабатывает байтовые строки с использованием кодировкиencoding.Если
strings_onlyравноTrue, не преобразовывать (некоторые) объекты, не являющиеся строками.
-
is_protected_type(obj)[source] -
Определяет, является ли объект экземпляром защищённого типа.
Объекты защищённых типов сохраняются без изменений при передаче в
force_text(strings_only=True).
-
force_text(s, encoding='utf-8', strings_only=False, errors='strict')[source] -
Аналогично
smart_text, за исключением того, что ленивые экземпляры преобразуются в строки, а не сохраняются как ленивые объекты.Если
strings_onlyравноTrue, не преобразовывать (некоторые) объекты, не являющиеся строками.
-
smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict')[source] -
Возвращает строку байтов
s, закодированную, как указано вencoding.Если
strings_onlyравноTrue, не преобразовывать (некоторые) объекты, не являющиеся строками.
-
force_bytes(s, encoding='utf-8', strings_only=False, errors='strict')[source] -
Аналогично
smart_bytes, за исключением того, что ленивые экземпляры преобразуются в строки байтов, а не сохраняются как ленивые объекты.Если
strings_onlyравноTrue, не преобразовывать (некоторые) объекты, не являющиеся строками.
-
smart_str(s, encoding='utf-8', strings_only=False, errors='strict') -
Псевдоним
smart_text(). Эта функция возвращает строкуstrили ленивую строку.Например, это подходит для записи в
sys.stdout.Псевдоним
smart_bytes()в Python 2 (в более старых версиях Django, которые это поддерживают).
-
force_str(s, encoding='utf-8', strings_only=False, errors='strict') -
Псевдоним
force_text(). Эта функция всегда возвращает строкуstr.Псевдоним
force_bytes()в Python 2 (в более старых версиях Django, которые это поддерживают).
-
iri_to_uri(iri)[source] -
Преобразуйте часть Международного идентификатора ресурса (IRI) в часть URI, подходящую для включения в URL.
Это алгоритм из раздела 3.1 RFC 3987#section-3.1, немного упрощённый, так как вход предполагается строкой, а не произвольным потоком байтов.
Принимает IRI (строку или байты UTF-8) и возвращает строку с закодированным результатом.
-
uri_to_iri(uri)[source] -
Преобразует идентификатор универсального ресурса в идентификатор международного ресурса.
Это алгоритм из раздела 3.2 RFC 3987#section-3.2.
Принимает URI в ASCII-байтах и возвращает строку с закодированным результатом.
-
filepath_to_uri(path)[source] -
Преобразуйте путь к файловой системе в часть URI, подходящую для включения в URL. Путь предполагается либо байтами UTF-8, либо строкой.
Этот метод закодирует определённые символы, которые обычно считаются специальными символами для URI. Обратите внимание, что этот метод не кодирует символ ‘, поскольку он является допустимым символом в URI. См. функцию JavaScript
encodeURIComponent()для получения более подробной информации.Возвращает строку ASCII, содержащую закодированный результат.
-
escape_uri_path(path)[source] -
Экранирует небезопасные символы из части пути универсального идентификатора ресурса (URI).
django.utils.feedgenerator
Пример использования:
>>> from django.utils import feedgenerator
>>> feed = feedgenerator.Rss201rev2Feed(
... title="Poynter E-Media Tidbits",
... link="http://www.poynter.org/column.asp?id=31",
... description="A group Weblog by the sharpest minds in online media/journalism/publishing.",
... language="en",
... )
>>> feed.add_item(
... title="Hello",
... link="http://www.holovaty.com/test/",
... description="Testing.",
... )
>>> with open('test.rss', 'w') as fp:
... feed.write(fp, 'utf-8')
Для упрощения выбора генератора используйте feedgenerator.DefaultFeed, который в данный момент Rss201rev2Feed
Для определения различных версий RSS, см.: https://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004/02/04/incompatible-rss
-
get_tag_uri(url, date)[source] -
Создаёт TagURI.
См. https://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id
SyndicationFeed
-
class SyndicationFeed[source] -
Базовый класс для всех лент агрегации. Подклассы должны реализовывать метод write().
-
__init__(title, link, description, language=None, author_email=None, author_name=None, author_link=None, subtitle=None, categories=None, feed_url=None, feed_copyright=None, feed_guid=None, ttl=None, **kwargs)[source] -
Инициализирует ленту заданным словарем метаданных, который применим ко всей ленте.
Любые дополнительные ключевые аргументы, которые вы передаёте в
__init__, будут сохранены вself.feed.Все параметры должны быть строками, за исключением
categories, которое должно быть последовательностью строк.
-
add_item(title, link, description, author_email=None, author_name=None, author_link=None, pubdate=None, comments=None, unique_id=None, categories=(), item_copyright=None, ttl=None, updateddate=None, enclosures=None, **kwargs)[source] -
Добавляет элемент в ленту. Все аргументы, кроме
pubdateиupdateddate, которые являются объектамиdatetime.datetime, иenclosures, которое является списком экземпляровEnclosure, ожидаются в виде строк.
-
num_items()[source]
-
root_attributes()[source] -
Возвращает дополнительные атрибуты для корневого элемента (т.е. элемента ленты/канала). Вызывается из
write().
-
add_root_elements(handler)[source] -
Добавляет элементы в корневой элемент (т.е. элемент ленты/канала). Вызывается из
write().
-
item_attributes(item)[source] -
Возвращает дополнительные атрибуты для каждого элемента (т.е. элемента элемента/записи).
-
add_item_elements(handler, item)[source] -
Добавляет элементы к каждому элементу (т.е. элементу элемента/записи).
-
write(outfile, encoding)[source] -
Выводит ленту в заданной кодировке в
outfile, который является объектом, похожим на файл. Подклассы должны переопределять этот метод.
-
writeString(encoding)[source] -
Возвращает ленту в заданной кодировке в виде строки.
-
latest_post_date()[source] -
Возвращает самую позднюю
pubdateилиupdateddateдля всех элементов в ленте. Если ни у одного элемента нет ни одного из этих атрибутов, возвращается текущая дата/время UTC.Изменено в Django 1.11:В более ранних версиях возвращалось текущее время без информации о часовом поясе.
-
Enclosure
-
class Enclosure[source] -
Представляет вложение RSS
RssFeed
-
class RssFeed(SyndicationFeed)[source]
Rss201rev2Feed
-
class Rss201rev2Feed(RssFeed)[source] -
Спецификация: https://cyber.harvard.edu/rss/rss.html
RssUserland091Feed
-
class RssUserland091Feed(RssFeed)[source] -
Спецификация: http://backend.userland.com/rss091
Atom1Feed
-
class Atom1Feed(SyndicationFeed)[source] -
Спецификация: https://tools.ietf.org/html/rfc4287
django.utils.functional
-
class cached_property(func, name=None)[source] -
Декоратор
@cached_propertyкэширует результат метода с одним аргументомselfв виде свойства. Кэшированный результат сохраняется до тех пор, пока существует экземпляр, поэтому если экземпляр передаётся, и функция затем вызывается, будет возвращён кэшированный результат.Рассмотрим типичный случай, когда представление может вызвать метод модели для выполнения вычислений, прежде чем поместить экземпляр модели в контекст, где шаблон может вызвать метод ещё раз:
# the model class Person(models.Model): def friends(self): # expensive computation ... return friends # in the view: if person.friends(): ...И в шаблоне у вас будет:
{% for friend in person.friends %}Здесь
friends()будет вызван дважды. Поскольку экземплярpersonв представлении и шаблоне одинаковы, декорирование методаfriends()с помощью@cached_propertyможет этого избежать:from django.utils.functional import cached_property class Person(models.Model): @cached_property def friends(self): ...Обратите внимание, что поскольку метод теперь является свойством, в коде Python его необходимо вызвать соответствующим образом:
# in the view: if person.friends: ...Кэшированное значение может быть обработано как обычный атрибут экземпляра:
# clear it, requiring re-computation next time it's called del person.friends # or delattr(person, "friends") # set a value manually, that will persist on the instance until cleared person.friends = ["Huckleberry Finn", "Tom Sawyer"]
Помимо потенциальных преимуществ производительности,
@cached_propertyможет гарантировать, что значение атрибута не изменится неожиданно на протяжении всего жизненного цикла экземпляра. Это может произойти с методом, вычисление которого основано наdatetime.now(), или просто если изменение было сохранено в базе данных другим процессом в короткий промежуток времени между последующими вызовами метода на том же экземпляре.Вы можете использовать аргумент
nameдля создания кэшированных свойств других методов. Например, если у вас был дорогой методget_friends()и вы хотели позволить его вызов без получения кэшированного значения, вы могли бы написать:friends = cached_property(get_friends, name='friends')
В то время как
person.get_friends()будет пересчитывать друзей при каждом вызове, значение кэшированного свойства сохранится до тех пор, пока вы его не удалите, как описано выше:x = person.friends # calls first time y = person.get_friends() # calls again z = person.friends # does not call x is z # is True
-
keep_lazy(func, *resultclasses)[source] -
Django предлагает множество вспомогательных функций (особенно в
django.utils), которые принимают строку в качестве первого аргумента и выполняют с ней какие-либо действия. Эти функции используются как фильтрами шаблонов, так и непосредственно в другом коде.Если вы напишете свои аналогичные функции и будете работать с переводами, вы столкнётесь с проблемой, что делать, когда первый аргумент — объект ленивого перевода. Вы не хотите сразу преобразовывать его в строку, потому что вы можете использовать эту функцию вне представления (и, следовательно, текущее языковое окружение потока не будет правильным).
В таких случаях используйте декоратор
django.utils.functional.keep_lazy(). Он изменяет функцию таким образом, что, если она вызывается с ленивым объектом перевода в качестве одного из аргументов, оценка функции откладывается до тех пор, пока не потребуется преобразование в строку.Например:
from django.utils.functional import keep_lazy, keep_lazy_text def fancy_utility_function(s, ...): # Do some conversion on string 's' ... fancy_utility_function = keep_lazy(str)(fancy_utility_function) # Or more succinctly: @keep_lazy(str) def fancy_utility_function(s, ...): ...Декоратор
keep_lazy()принимает ряд дополнительных аргументов (*args) , определяя типы, которые может возвращать исходная функция. Распространённым случаем использования являются функции, возвращающие текст. В таких случаях вы можете просто передать типstrвkeep_lazy(или даже проще использовать декораторkeep_lazy_text(), описанный в следующей секции).Использование этого декоратора означает, что вы можете написать свою функцию и предположить, что вход — это правильная строка, а затем добавить поддержку ленивых объектов перевода в конце.
-
keep_lazy_text(func)[source] -
Краткая форма для
keep_lazy(str)(func).Если у вас есть функция, которая возвращает текст, и вы хотите иметь возможность принимать ленивые аргументы, откладывая их оценку, просто используйте этот декоратор:
from django.utils.functional import keep_lazy, keep_lazy_text # Our previous example was: @keep_lazy(str) def fancy_utility_function(s, ...): ... # Which can be rewritten as: @keep_lazy_text def fancy_utility_function(s, ...): ...
django.utils.html
Обычно для построения HTML вы должны использовать шаблоны Django, чтобы воспользоваться механизмом автоэкранирования, используя утилиты в django.utils.safestring где это необходимо. Этот модуль предоставляет некоторые дополнительные низкоуровневые утилиты для экранирования HTML.
-
escape(text)[source] -
Возвращает заданный текст с амперсандам, кавычками и угловыми скобками, закодированными для использования в HTML. Входные данные сначала передаются через
force_text(), а выход имеетmark_safe()применённое.
-
conditional_escape(text)[source] -
Аналогично
escape(), за исключением того, что он не работает со строками, предварительно экранированными, поэтому он не будет двойным экранированием.
-
format_html(format_string, *args, **kwargs)[source] -
Это аналогично
str.format(), за исключением того, что это подходит для построения фрагментов HTML. Все аргументы и ключевые слова передаются черезconditional_escape()перед передачей вstr.format().В случае построения небольших фрагментов HTML эта функция предпочтительнее интерполяции строк с использованием
%илиstr.format()напрямую, потому что она применяет экранирование ко всем аргументам - точно так же, как система шаблонов применяет экранирование по умолчанию.Так, вместо написания:
mark_safe("%s <b>%s</b> %s" % ( some_html, escape(some_text), escape(some_other_text), ))Вы должны вместо этого использовать:
format_html("{} <b>{}</b> {}", mark_safe(some_html), some_text, some_other_text, )Это имеет преимущество, что вам не нужно применять
escape()к каждому аргументу и рисковать ошибкой и уязвимостью XSS, если вы забудете об одном.Обратите внимание, что хотя эта функция использует
str.format()для интерполяции, некоторые из параметров форматирования, предоставляемыеstr.format(), (например, форматирование чисел) не будут работать, поскольку все аргументы передаются черезconditional_escape(), который (в конечном счёте) вызываетforce_text()для значений.
-
format_html_join(sep, format_string, args_generator)[source] -
Обёртка
format_html(), для общего случая группы аргументов, которые необходимо отформатировать с использованием одного и того же формата строки, а затем объединить с помощьюsep.sepтакже передаётся черезconditional_escape().args_generatorдолжен быть итератором, который возвращает последовательностьargs, которые будут переданы вformat_html(). Например:format_html_join( '\n', "<li>{} {}</li>", ((u.first_name, u.last_name) for u in users) )
-
Пытается удалить всё, что выглядит как тег HTML из строки, то есть всё, что находится внутри
<>.Абсолютно никакой гарантии не предоставляется о том, что результирующая строка будет безопасной для HTML. Поэтому НИКОГДА не отмечайте результат вызова
strip_tagкак безопасный без его предварительного экранирования, например, с помощьюescape().Например:
strip_tags(value)
Если
valueэто"<b>Joel</b> <button>is</button> a <span>slug</span>", то значение возврата будет"Joel is a slug".Если вам нужен более надёжный вариант, обратитесь к библиотеке Python bleach.
-
html_safe()[source] -
Метод
__html__()в классе помогает шаблонам, не являющимся Django, определить классы, вывод которых не требует экранирования HTML.Этот декоратор определяет метод
__html__()в украшенном классе, обёрткой__str__()вmark_safe(). Убедитесь, что метод__str__()действительно возвращает текст, который не требует экранирования HTML.
django.utils.http
-
urlencode(query, doseq=False)[source] -
Вариант функции Python
urllib.parse.urlencode(), которая может работать сMultiValueDictи нестроковыми значениями.
-
Форматирует время для обеспечения совместимости со стандартом cookie Netscape.
Принимает число с плавающей точкой, выраженное в секундах с начала эпохи по UTC, — например, то, что выводится
time.time(). Если установленоNone, по умолчанию используется текущее время.Выводит строку в формате
Wdy, DD-Mon-YYYY HH:MM:SS GMT.
-
http_date(epoch_seconds=None)[source] -
Форматирует время, чтобы соответствовать формату даты RFC 1123, как указано в HTTP RFC 7231#section-7.1.1.1.
Принимает число с плавающей точкой, выраженное в секундах с начала эпохи по UTC–такое, что выводится
time.time(). Если установленоNone, по умолчанию используется текущее время.Выводит строку в формате
Wdy, DD Mon YYYY HH:MM:SS GMT.
-
base36_to_int(s)[source] -
Преобразует строку в системе счисления по основанию 36 в целое число.
-
int_to_base36(i)[source] -
Преобразует положительное целое число в строку в системе счисления по основанию 36.
-
urlsafe_base64_encode(s)[source] -
Кодирует строку байтов в base64 для использования в URL, удаляя любые завершающие знаки равенства.
-
urlsafe_base64_decode(s)[source] -
Декодирует закодированную в base64 строку, добавляя обратно любые завершающие знаки равенства, которые могли быть удалены.
django.utils.module_loading
Функции для работы с модулями Python.
-
import_string(dotted_path)[source] -
Импортирует путь модуля с точками и возвращает атрибут/класс, обозначенный последним именем в пути. Вызывает
ImportErrorесли импорт не удался. Например:from django.utils.module_loading import import_string ValidationError = import_string('django.core.exceptions.ValidationError')эквивалентно:
from django.core.exceptions import ValidationError
django.utils.safestring
Функции и классы для работы с «безопасными строками»: строками, которые можно безопасно отображать без дальнейшего экранирования в HTML. Отмечение чего-либо как «безопасной строки» означает, что производитель строки уже преобразовал символы, которые не должны интерпретироваться движком HTML (например, ‘<’), в соответствующие сущности.
-
class SafeString -
Подкласс
str, который специально помечен как «безопасный» (не требует дальнейшего экранирования) для целей вывода HTML. ПсевдонимSafeText.
-
class SafeText[source] -
Подкласс
strкоторый специально помечен как «безопасный» для вывода HTML.
-
mark_safe(s)[source] -
Явно отмечает строку как безопасную для вывода (HTML). Возвращаемый объект можно использовать везде, где подходит строка.
Может быть вызван несколько раз для одной строки.
Также может использоваться как декоратор.
Для построения фрагментов HTML обычно следует использовать
django.utils.html.format_html().Отмеченная как безопасная строка может снова стать небезопасной при модификации. Например:
>>> mystr = '<b>Hello World</b> ' >>> mystr = mark_safe(mystr) >>> type(mystr) <class 'django.utils.safestring.SafeText'> >>> mystr = mystr.strip() # removing whitespace >>> type(mystr) <type 'str'>
Изменено в Django 1.11:Добавлена поддержка использования в качестве декоратора.
django.utils.text
-
format_lazy(format_string, *args, **kwargs) -
Новое в Django 1.11.
Вариант
str.format()для случаев, когдаformat_string,args, и/илиkwargsсодержат ленивые объекты. Первый аргумент — строка, подлежащая форматированию. Например:from django.utils.text import format_lazy from django.utils.translation import pgettext_lazy urlpatterns = [ path(format_lazy('{person}/<int:pk>/', person=pgettext_lazy('URL', 'person')), PersonDetailView.as_view()), ]Этот пример позволяет переводчикам перевести часть URL. Если «person» переведено на «persona», то регулярное выражение будет соответствовать
persona/(?P<pk>\d+)/$, напримерpersona/5/.
-
slugify(allow_unicode=False)[source] -
Преобразует в ASCII, если
allow_unicodeравноFalse(по умолчанию). Преобразует пробелы в дефисы. Удаляет символы, которые не являются алфавитно-цифровыми, подчеркиваниями или дефисами. Преобразует в нижний регистр. Также удаляет начальные и конечные пробелы.Например:
slugify(value)
Если
valueравно"Joel is a slug", результат будет"joel-is-a-slug".Можно установить параметр
allow_unicodeв значениеTrue, если вы хотите разрешить использование символов Юникода:slugify(value, allow_unicode=True)
Если
valueравно"你好 World", результат будет"你好-world".
django.utils.timezone
-
utc -
tzinfoобъект, представляющий UTC.
-
class FixedOffset(offset=None, name=None)[source] -
Подкласс
tzinfo, моделирующий фиксированное смещение от UTC.offset— целое число, представляющее количество минут к востоку от UTC.
-
get_fixed_timezone(offset)[source] -
Возвращает
tzinfoобъект, представляющий часовой пояс с фиксированным смещением от UTC.offset—datetime.timedeltaили целое число, представляющее количество минут. Используйте положительные значения для часовых поясов восточнее UTC и отрицательные для западнее UTC.
-
get_default_timezone()[source] -
Возвращает
tzinfoобъект, представляющий по умолчанию часовой пояс.
-
get_default_timezone_name()[source] -
Возвращает имя по умолчанию часового пояса.
-
get_current_timezone()[source] -
Возвращает
tzinfoобъект, представляющий текущий часовой пояс.
-
get_current_timezone_name()[source] -
Возвращает имя текущего часового пояса.
-
activate(timezone)[source] -
Устанавливает текущий часовой пояс. Аргумент
timezoneдолжен быть экземпляром подклассаtzinfoили именем часового пояса.
-
deactivate()[source] -
Снимает установку текущего часового пояса.
-
override(timezone)[source] -
Это менеджер контекста Python, который устанавливает текущий часовой пояс при входе с помощью
activate()и восстанавливает ранее активный часовой пояс при выходе. Если аргументtimezoneравенNone, текущий часовой пояс снимается при входе с помощьюdeactivate()вместо этого.overrideтакже может использоваться как декоратор функции.
-
localtime(value=None, timezone=None)[source] -
Преобразует осознаваемое
datetimeв другой часовой пояс, по умолчанию в текущий часовой пояс.Если
valueопущено, он по умолчанию равенnow().Эта функция не работает с неосознанными датами и временами; используйте
make_aware()вместо этого.Изменено в Django 1.11:В более старых версиях
valueявляется обязательным аргументом.
-
localdate(value=None, timezone=None)[source] -
Новое в Django 1.11.
Использует
localtime()для преобразования осознаваемогоdatetimeвdate()в другом часовом поясе, по умолчанию в текущем часовом поясе.Если
valueопущено, он по умолчанию равенnow().Эта функция не работает с неосознанными датами и временами.
-
now()[source] -
Возвращает
datetime, представляющий текущий момент времени. Точное значение зависит от значенияUSE_TZ:- Если
USE_TZравноFalse, это будет неявное значение datetime (т.е. datetime без связанной временной зоны), представляющее текущее время в локальной временной зоне системы. - Если
USE_TZравноTrue, это будет явное значение datetime, представляющее текущее время в UTC. Обратите внимание, чтоnow()всегда возвращает время в UTC, независимо от значенияTIME_ZONE; вы можете использоватьlocaltime(), чтобы получить время в текущей временной зоне.
- Если
-
is_aware(value)[source] -
Возвращает
True, еслиvalueявляется явным,False, если оно неявное. Эта функция предполагает, чтоvalue— этоdatetime.
-
is_naive(value)[source] -
Возвращает
True, еслиvalueнеявное,False, если оно явное. Эта функция предполагает, чтоvalue— этоdatetime.
-
make_aware(value, timezone=None, is_dst=None)[source] -
Возвращает явное
datetime, представляющее ту же точку времени, что иvalueвtimezone,value— это неявноеdatetime. Еслиtimezoneустановлено вNone, оно по умолчанию использует текущую временную зону.Исключение
pytz.AmbiguousTimeErrorвозникает, если вы пытаетесь сделатьvalueявным во время перехода DST, когда то же время происходит дважды (при возврате из DST). Установкаis_dstвTrueилиFalseпредотвратит исключение, выбрав, является ли время до перехода или после перехода соответственно.Исключение
pytz.NonExistentTimeErrorвозникает, если вы пытаетесь сделатьvalueявным во время перехода DST таким образом, что время никогда не происходило (при входе в DST). Установкаis_dstвTrueилиFalseпредотвратит исключение, сдвинув час назад или вперед на 1 соответственно. Например,is_dst=Trueизменит несуществующее время 2:30 на 1:30, аis_dst=Falseизменит время на 3:30.
-
make_naive(value, timezone=None)[source] -
Возвращает неявное
datetime, представляющее вtimezoneту же точку времени, что иvalue,value— это явноеdatetime. Еслиtimezoneустановлено вNone, оно по умолчанию использует текущую временную зону.
django.utils.translation
Полное описание использования функций ниже см. в документации по переводу.
Префикс u в функциях ниже происходит из различий в Python 2 между unicode и байтовыми строками. Если ваш код не поддерживает Python 2, используйте функции без u.
-
gettext(message)[source]
-
ugettext(message) -
Переводит
messageи возвращает его как строку.
-
pgettext(context, message)[source] -
Переводит
messageс учетомcontextи возвращает его как строку.Дополнительная информация в разделах с контекстом.
-
gettext_lazy(message)
-
ugettext_lazy(message)
-
pgettext_lazy(context, message) -
Аналогично вариантам без ленивого выполнения, но с ленивым выполнением.
-
gettext_noop(message)[source]
-
ugettext_noop(message) -
Помечает строки для перевода, но не переводит их сейчас. Это можно использовать для хранения строк в глобальных переменных, которые должны оставаться на базовом языке (потому что они могут использоваться внешне), и они будут переведены позже.
-
ngettext(singular, plural, number)[source]
-
ungettext(singular, plural, number) -
Переводит
singularиpluralи возвращает соответствующую строку, в зависимости отnumber.
-
npgettext(context, singular, plural, number)[source] -
Переводит
singularиpluralи возвращает соответствующую строку, в зависимости отnumberиcontext.
-
ngettext_lazy(singular, plural, number)[source]
-
ungettext_lazy(singular, plural, number)
-
npgettext_lazy(context, singular, plural, number)[source] -
Аналогично вариантам без ленивого выполнения, но с ленивым выполнением.
-
string_concat(*strings) -
Устарело начиная с версии 1.11: Используйте
django.utils.text.format_lazy()вместо этого.string_concat(*strings)можно заменить наformat_lazy('{}' * len(strings), *strings).Ленивый вариант конкатенации строк, необходимый для переводов, которые построены из нескольких частей.
-
activate(language)[source] -
Получает объект перевода для заданного языка и активирует его как текущий объект перевода для текущей потоковой нити.
-
deactivate()[source] -
Деактивирует текущий активный объект перевода, чтобы последующие _ вызовы будут разрешаться относительно объекта перевода по умолчанию.
-
deactivate_all()[source] -
Делает активный объект перевода экземпляром
NullTranslations(). Это полезно, когда мы хотим, чтобы отложенные переводы отображались как исходная строка по какой-то причине.
-
override(language, deactivate=False)[source] -
Менеджер контекста Python, который использует
django.utils.translation.activate()для извлечения объекта перевода для заданного языка, активирует его как объект перевода для текущей нити и восстанавливает предыдущий активный язык при выходе. По желанию, он может просто деактивировать временный перевод при выходе с помощьюdjango.utils.translation.deactivate(), если аргументdeactivateравенTrue. Если вы передадитеNoneв качестве аргумента языка, внутри контекста будет активирован экземплярNullTranslations().overrideтакже может использоваться как декоратор функции.
-
check_for_language(lang_code)[source] -
Проверяет, есть ли глобальный файл языка для данного кода языка (например, ‘fr’, ‘pt_BR’). Это используется для определения доступности языка, предоставленного пользователем.
-
get_language()[source] -
Возвращает код текущего выбранного языка. Возвращает
None, если переводы временно деактивированы (методомdeactivate_all()или когдаNoneпередаётся вoverride()).
-
get_language_bidi()[source] -
Возвращает двунаправленную раскладку выбранного языка:
-
False= раскладка слева направо -
True= раскладка справа налево
-
-
get_language_from_request(request, check_path=False)[source] -
Анализирует запрос, чтобы определить, какой язык пользователь хочет видеть. Учитываются только языки, перечисленные в settings.LANGUAGES. Если пользователь запрашивает подязык, где у нас есть основной язык, мы отправляем основной язык.
Если
check_pathравноTrue, функция сначала проверяет запрошенный URL на предмет того, начинается ли его путь с кода языка, перечисленного в настройкеLANGUAGES.
-
to_locale(language)[source] -
Преобразует имя языка (en-us) в имя локали (en_US).
-
templatize(src)[source] -
Преобразует шаблон Django в то, что понимает
xgettext. Для этого переводятся теги перевода Django в стандартные вызовы функцийgettext.
-
LANGUAGE_SESSION_KEY -
Ключ сессии, в котором хранится активный язык текущей сессии.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.0/ref/utils/