Джанго Утилиты¶
Этот документ охватывает все стабильные модули в django.utils. Большинство модулей в django.utils предназначены для внутреннего использования, и только следующие части могут считаться стабильными и, следовательно, обратно совместимыми в соответствии с внутренней политикой устаревания выпусков.
django.utils.cache¶
Этот модуль содержит вспомогательные функции для управления HTTP-кешированием. Это достигается путем управления заголовком ответов Vary. Он включает в себя функции для непосредственного исправления заголовка объектов ответа и декораторы, которые изменяют функции для самостоятельного исправления заголовка.
For information on the Vary header, see RFC 7231 Section 7.1.4.
По сути, HTTP-заголовок Vary определяет, какие заголовки кэш должен учитывать при построении своего ключа кэша. Запросы с одинаковым путем, но с разным содержимым заголовка для заголовков, названных в Vary, должны получать разные ключи кэша, чтобы предотвратить доставку неправильного содержимого.
Например, промежуточное ПО интернационализации должно будет различать кеши по заголовку Accept-language.
- patch_cache_control(response, **kwargs)¶
Эта функция исправляет заголовок Cache-Control, добавляя в него все аргументы ключевого слова. Преобразование заключается в следующем:
Все имена параметров ключевых слов преобразуются в нижний регистр, а символы подчеркивания преобразуются в дефисы.
Если значение параметра равно «True» (именно «True», а не просто истинное значение), в заголовок добавляется только имя параметра.
Все остальные параметры добавляются со своими значениями после применения к ним
str().
Changed in Django 3.1:Support for multiple field names in the
no-cachedirective was added.
- get_max_age(response)¶
Возвращает максимальный возраст из заголовка ответа Cache-Control в виде целого числа (или None, если он не найден или не является целым числом).
- patch_response_headers(response, cache_timeout=None)¶
Добавляет несколько полезных заголовков к данному объекту HttpResponse:
Срок действия истекаетКэш-Контроль
Каждый заголовок добавляется только в том случае, если он еще не установлен.
cache_timeoutизмеряется в секундах. ПараметрCACHE_MIDDLEWARE_SECONDSиспользуется по умолчанию.
- add_never_cache_headers(response)¶
Добавляет заголовок Cache-Control: max-age=0, no-cache, no-store, must-revalidate, Private к ответу, указывающий, что страница никогда не должна кэшироваться.
Changed in Django 3.0:privatedirective was added.
- patch_vary_headers(response, newheaders)¶
Adds (or updates) the
Varyheader in the givenHttpResponseobject.newheadersis a list of header names that should be inVary. If headers contains an asterisk, thenVaryheader will consist of a single asterisk'*'. Otherwise, existing headers inVaryaren’t removed.Changed in Django 3.0:Handling an asterisk
'*'according to RFC 7231 Section 7.1.4 was added.
- get_cache_key(request, key_prefix=None, method='GET', cache=None)¶
Возвращает ключ кэша на основе пути запроса. Его можно использовать на этапе запроса, поскольку он извлекает список заголовков, которые необходимо принять во внимание, из реестра глобальных путей и использует их для создания ключа кэша для проверки.
Если список заголовков не сохранен, страницу необходимо перестроить, поэтому эта функция возвращает None.
- learn_cache_key(request, response, cache_timeout=None, key_prefix=None, cache=None)¶
Узнает, какие заголовки следует учитывать для определенного пути запроса от объекта ответа. Он сохраняет эти заголовки в реестре глобальных путей, чтобы при последующем доступе к этому пути было известно, какие заголовки следует учитывать, без создания самого объекта ответа. Заголовки указаны в заголовке ответа Vary, но мы хотим предотвратить генерацию ответа.
Список заголовков, которые будут использоваться для генерации ключей кэша, хранится в том же кэше, что и сами страницы. Если кеш устаревает некоторые данные из кеша, это означает, что нам нужно один раз построить ответ, чтобы получить заголовок Vary и, следовательно, список заголовков, которые будут использоваться в качестве ключа кэша.
django.utils.dateparse¶
Функции, определенные в этом модуле, имеют следующие общие свойства:
Они принимают строки в формате даты/времени ISO 8601 (или некоторых близких альтернативах) и возвращают объекты из соответствующих классов в модуле Python
datetime.Они вызывают
ValueError, если их ввод правильно отформатирован, но не является допустимой датой или временем.Они возвращают None, если он вообще не отформатирован должным образом.
Они принимают входные данные с разрешением до пикосекунд, но урезают их до микросекунд, поскольку именно это поддерживает Python.
- parse_date(value)¶
Анализирует строку и возвращает
datetime.date.
- parse_time(value)¶
Анализирует строку и возвращает
datetime.time.Смещения UTC не поддерживаются; если
valueописывает одно, результатом будетNone.Changed in Django 3.1:Support for comma separators for milliseconds was added.
- parse_datetime(value)¶
Анализирует строку и возвращает
datetime.datetime.Поддерживаются смещения UTC; если
valueописывает его, атрибутtzinfoрезультата представляет собой экземплярdatetime.timezone.Changed in Django 3.1:Support for comma separators for milliseconds was added.
- parse_duration(value)¶
Анализирует строку и возвращает
datetime.timedelta.Ожидаются данные в формате
"DD HH:MM:SS.uuuuuu", ``"DD HH:MM:SS,uuuuuu"`, или как указано в ISO 8601 (например, ``P4DT1H15M20S, что эквивалентно4 1:15:20) или формате дневного интервала PostgreSQL (например,3 дней 04:05:06).Changed in Django 3.1:Support for comma separators for decimal fractions in the ISO 8601 format and for the format
"DD HH:MM:SS,uuuuuu"was added.
django.utils.decorators¶
- method_decorator(decorator, name='')¶
Преобразует декоратор функции в декоратор метода. Его можно использовать для украшения методов или классов; в последнем случае
name— это имя декорируемого метода, которое является обязательным.декоратортакже может быть списком или кортежем функций. Они переносятся в обратном порядке, так что порядок вызова соответствует порядку, в котором функции появляются в списке/кортеже.Пример использования см. в разделе декорирование представлений на основе классов.
- decorator_from_middleware(middleware_class)¶
Учитывая класс промежуточного программного обеспечения, возвращает декоратор представления. Это позволяет использовать функции промежуточного программного обеспечения для каждого представления. Промежуточное программное обеспечение создается без передачи параметров.
Он предполагает наличие промежуточного программного обеспечения, совместимого со старым стилем Django 1.9 и более ранних версий (имеющего такие методы, как
process_request(),process_Exception()иprocess_response()).
- decorator_from_middleware_with_args(middleware_class)¶
Похож на
decorator_from_middleware, но возвращает функцию, которая принимает аргументы для передачи в middleware_class. Например, декораторcache_page()создается изCacheMiddlewareследующим образом:cache_page = decorator_from_middleware_with_args(CacheMiddleware) @cache_page(3600) def my_view(request): pass
- sync_only_middleware(middleware)¶
- New in Django 3.1.
Помечает промежуточное ПО как только синхронное. (Значение по умолчанию в Django, но это позволит вам подготовиться к будущему, если значение по умолчанию когда-либо изменится в будущем выпуске.)
- async_only_middleware(middleware)¶
- New in Django 3.1.
Помечает промежуточное программное обеспечение как asynchronous-only. Django обернет его в асинхронный цикл событий, когда он будет вызван из пути запроса WSGI.
- sync_and_async_middleware(middleware)¶
- New in Django 3.1.
Помечает промежуточное программное обеспечение как sync и async-совместимое, это позволяет избежать преобразования запросов. Чтобы использовать этот декоратор, необходимо реализовать обнаружение текущего типа запроса. Подробности смотрите в документации по асинхронному промежуточному программному обеспечению <async-middleware>.
django.utils.encoding¶
- smart_str(s, encoding='utf-8', strings_only=False, errors='strict')¶
Возвращает объект
str, представляющий произвольный объектs. Обрабатывает байтовые строки с использованием кодека encoding.Если
strings_onlyимеет значениеTrue, не конвертируйте (некоторые) нестроковые объекты.
- is_protected_type(obj)¶
Определите, принадлежит ли экземпляр объекта к защищенному типу.
Объекты защищенных типов сохраняются как есть при передаче в
force_str(strings_only=True).
- force_str(s, encoding='utf-8', strings_only=False, errors='strict')¶
Аналогично
smart_str(), за исключением того, что ленивые экземпляры разрешаются в строки, а не сохраняются как ленивые объекты.Если
strings_onlyимеет значениеTrue, не конвертируйте (некоторые) нестроковые объекты.
- smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict')¶
Возвращает версию байтовой строки произвольного объекта
s, закодированную, как указано вencoding.Если
strings_onlyимеет значениеTrue, не конвертируйте (некоторые) нестроковые объекты.
- force_bytes(s, encoding='utf-8', strings_only=False, errors='strict')¶
Аналогично «smart_bytes», за исключением того, что ленивые экземпляры разрешаются в байтовые строки, а не сохраняются как ленивые объекты.
Если
strings_onlyимеет значениеTrue, не конвертируйте (некоторые) нестроковые объекты.
- smart_text(s, encoding='utf-8', strings_only=False, errors='strict')¶
Не рекомендуется, начиная с версии 3.0.
Alias of
force_str()for backwards compatibility, especially in code that supports Python 2.
- force_text(s, encoding='utf-8', strings_only=False, errors='strict')¶
Не рекомендуется, начиная с версии 3.0.
Alias of
force_str()for backwards compatibility, especially in code that supports Python 2.
- iri_to_uri(iri)¶
Преобразуйте часть интернационализированного идентификатора ресурса (IRI) в часть URI, подходящую для включения в URL-адрес.
Это алгоритм из раздела 3.1 документа RFC 3987 Section 3.1, немного упрощенный, поскольку предполагается, что входные данные представляют собой строку, а не произвольный поток байтов.
Принимает IRI (строку или байты UTF-8) и возвращает строку, содержащую закодированный результат.
- uri_to_iri(uri)¶
Преобразует универсальный идентификатор ресурса в интернационализированный идентификатор ресурса.
Это алгоритм из раздела 3.2 RFC 3987 Section 3.2.
Принимает URI в байтах ASCII и возвращает строку, содержащую закодированный результат.
- filepath_to_uri(path)¶
Преобразуйте путь файловой системы в часть URI, подходящую для включения в URL-адрес. Предполагается, что путь представляет собой либо байты UTF-8, строку, либо
Path.Этот метод будет кодировать определенные символы, которые обычно распознаются как специальные символы для URI. Обратите внимание, что этот метод не кодирует символ „, поскольку он является допустимым символом в URI. Подробнее см. функцию JavaScript encodeURIComponent().
Возвращает строку ASCII, содержащую закодированный результат.
Changed in Django 3.1:Support for
pathlib.Pathpathwas added.
- escape_uri_path(path)¶
Экранирует небезопасные символы из пути универсального идентификатора ресурса (URI).
django.utils.feedgenerator¶
Sample usage:
>>> 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/inсовместимый-rss.
- get_tag_uri(url, date)¶
Создает TagURI.
См. https://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id.
Корпус¶
- class Enclosure¶
Представляет вложение RSS
RssFeed¶
- class RssFeed(SyndicationFeed)¶
Rss201rev2Feed¶
- class Rss201rev2Feed(RssFeed)¶
Спецификация: https://cyber.harvard.edu/rss/rss.html.
RssUserland091Feed¶
- class RssUserland091Feed(RssFeed)¶
Спецификация: http://backend.userland.com/rss091.
Atom1Feed¶
django.utils.functional¶
- class cached_property(func, name=None)¶
Декоратор @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"]
Из-за особенностей работы протокола дескриптора использование del`` (или
delattr) дляcached_property, к которому не было доступа, вызываетAttributeError.Помимо потенциальных преимуществ в производительности,
@cached_propertyможет гарантировать, что значение атрибута не изменится неожиданно в течение срока службы экземпляра. Это может произойти с методом, вычисление которого основано наdatetime.now(), или если изменение было сохранено в базе данных каким-либо другим процессом в короткий интервал между последующими вызовами метода в одном и том же экземпляре.Вы можете кэшировать свойства методов. Например, если у вас есть дорогостоящий метод get_friends() и вы хотите разрешить его вызов без получения кэшированного значения, вы можете написать:
friends = cached_property(get_friends, name='friends')
You only need the
nameargument for Python < 3.6 support.Хотя 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
- class classproperty(method=None)¶
- New in Django 3.1.
Подобно
@classmethod, декоратор@classpropertyпреобразует результат метода с одним аргументомclsв свойство, к которому можно получить доступ непосредственно из класса.
- keep_lazy(func, *resultclasses)¶
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)¶
Ярлык для
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)¶
Возвращает заданный текст с амперсандами, кавычками и угловыми скобками, закодированный для использования в HTML. Входные данные сначала преобразуются в строку, а к выходным применяется
mark_safe().Changed in Django 3.0:In older versions,
'is converted to its decimal code'instead of the equivalent hex code'.
- conditional_escape(text)¶
Similar to
escape(), except that it doesn’t operate on pre-escaped strings, so it will not double escape.
- format_html(format_string, *args, **kwargs)¶
This is similar to
str.format(), except that it is appropriate for building up HTML fragments. All args and kwargs are passed throughconditional_escape()before being passed tostr.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_str()для значений.
- format_html_join(sep, format_string, args_generator)¶
Обертка
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) )
- strip_tags(value)¶
Пытается удалить из строки все, что похоже на HTML-тег, то есть все, что содержится в
<>.Абсолютно НЕТ гарантии, что полученная строка будет безопасной для HTML. Поэтому НИКОГДА не отмечайте безопасным результат вызова
strip_tagбез его предварительного экранирования, например, с помощьюescape().Например:
strip_tags(value)
Если
valueравно"<b>Джоэл</b> <button>является</button> <span>слизнем</span>", возвращаемым значением будет"Джоэл - слизень".If you are looking for a more robust solution, take a look at the bleach Python library.
- html_safe()¶
Метод
__html__()в классе помогает шаблонам, отличным от Django, обнаруживать классы, вывод которых не требует экранирования HTML.Этот декоратор определяет метод __html__() в декорируемом классе, заключая __str__() в
mark_safe(). Убедитесь, что метод __str__() действительно возвращает текст, который не требует экранирования HTML.
django.utils.http¶
- urlencode(query, doseq=False)¶
Версия функции Python
urllib.parse.urlencode(), которая может работать сMultiValueDictи нестроковыми значениями.
- http_date(epoch_seconds=None)¶
Formats the time to match the RFC 1123 Section 5.2.14 date format as specified by HTTP RFC 7231 Section 7.1.1.1.
Принимает число с плавающей запятой, выраженное в секундах с начала эпохи в формате UTC, например, выведенное с помощью
time.time(). Если установлено значение «Нет», по умолчанию используется текущее время.Выводит строку в формате
Wdy, DD Mon YYYY HH:MM:SS GMT.
- base36_to_int(s)¶
Преобразует строку по основанию 36 в целое число.
- int_to_base36(i)¶
Преобразует положительное целое число в строку с основанием 36.
- urlsafe_base64_encode(s)¶
Кодирует байтовую строку в строку base64 для использования в URL-адресах, удаляя все конечные знаки равенства.
- urlsafe_base64_decode(s)¶
Декодирует строку в кодировке Base64, добавляя обратно все конечные знаки равенства, которые могли быть удалены.
django.utils.module_loading¶
Функции для работы с модулями Python.
- import_string(dotted_path)¶
Импортирует путь к модулю, обозначенный точками, и возвращает атрибут/класс, обозначенный фамилией в пути. Вызывает 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.
- mark_safe(s)¶
Явно пометьте строку как безопасную для целей вывода (HTML). Возвращенный объект можно использовать везде, где подходит строка.
Может вызываться несколько раз в одной строке.
Также можно использовать как декоратор.
Для создания фрагментов HTML вместо этого обычно следует использовать
django.utils.html.format_html().String marked safe will become unsafe again if modified. For example:
>>> mystr = '<b>Hello World</b> ' >>> mystr = mark_safe(mystr) >>> type(mystr) <class 'django.utils.safestring.SafeString'> >>> mystr = mystr.strip() # removing whitespace >>> type(mystr) <type 'str'>
django.utils.text¶
- format_lazy(format_string, *args, **kwargs)¶
Версия
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+)/$, напримерперсона/5/.
- slugify(value, allow_unicode=False)¶
Преобразует строку в фрагмент URL-адреса следующим образом:
Преобразование в ASCII, если
allow_unicodeимеет значениеFalse(по умолчанию).Преобразование в нижний регистр.
Удаление символов, которые не являются буквенно-цифровыми, подчеркиваниями, дефисами или пробелами.
Removing leading and trailing whitespace.
Замена любых пробелов или повторяющихся тире одинарными тире.
Например:
>>> slugify(' Joel is a slug ') 'joel-is-a-slug'
If you want to allow Unicode characters, pass
allow_unicode=True. For example:>>> slugify('你好 World', allow_unicode=True) '你好-world'
django.utils.timezone¶
- utc¶
tzinfoinstance that represents UTC.
- get_fixed_timezone(offset)¶
Возвращает экземпляр
tzinfo, который представляет часовой пояс с фиксированным смещением от UTC.offsetпредставляет собойdatetime.timedeltaили целое число минут. Используйте положительные значения для часовых поясов к востоку от UTC и отрицательные значения для запада от UTC.
- get_default_timezone()¶
Возвращает экземпляр
tzinfo, который представляет часовой пояс по умолчанию.
- get_default_timezone_name()¶
Возвращает имя часового пояса по умолчанию <default-current-time-zone>`.
- get_current_timezone()¶
Возвращает экземпляр
tzinfo, который представляет текущий часовой пояс.
- get_current_timezone_name()¶
Возвращает имя текущего часового пояса.
- activate(timezone)¶
Устанавливает текущий часовой пояс. Аргумент
timezoneдолжен быть экземпляром подклассаtzinfoили именем часового пояса.
- deactivate()¶
Сбрасывает текущий часовой пояс.
- override(timezone)¶
Это контекстный менеджер Python, который устанавливает текущий часовой пояс <default-current-time-zone>` при входе с помощью
activate()и восстанавливает ранее активный часовой пояс при выходе. Если аргументtimezoneравенNone, текущий часовой пояс сбрасывается при вводе с помощьюdeactivate()вместо этого.overrideтакже можно использовать в качестве декоратора функции.
- localtime(value=None, timezone=None)¶
Преобразует
datetimeв другой часовой пояс, по умолчанию текущий часовой пояс.Если
valueопущено, по умолчанию используетсяnow().Эта функция не работает с простыми датами; вместо этого используйте
make_aware().
- localdate(value=None, timezone=None)¶
Использует
localtime()для преобразованияdatetimeвdate()в другом часовом поясе, по умолчанию текущий часовой пояс.Если
valueопущено, по умолчанию используетсяnow().Эта функция не работает с простыми датами и временем.
- now()¶
Возвращает
datetime, который представляет текущий момент времени. Что именно возвращается, зависит от значенияUSE_TZ:Если
USE_TZимеет значениеFalse, это будет наивное datetime (т. е. дата-время без связанного часового пояса), которое представляет текущее время в локальном часовом поясе системы.Если
USE_TZимеет значениеTrue, это будет aware datetime, представляющая текущее время в формате UTC. Обратите внимание, чтоnow()всегда будет возвращать время в формате UTC, независимо от значенияTIME_ZONE; вы можете использоватьlocaltime(), чтобы получить время в текущем часовом поясе.
- is_aware(value)¶
Возвращает
True, еслиvalueизвестно,False, если оно является наивным. Эта функция предполагает, чтоvalueпредставляет собойdatetime.
- is_naive(value)¶
Возвращает
True, еслиvalueявляется наивным,False, если оно известно. Эта функция предполагает, чтоvalueпредставляет собойdatetime.
- make_aware(value, timezone=None, is_dst=None)¶
Возвращает известный
datetime, который представляет тот же момент времени, что иvalueвtimezone,valueявляется наивнымdatetime. Если дляtimezoneустановлено значениеNone, по умолчанию используется текущий часовой пояс <default-current-time-zone>`.The
pytz.AmbiguousTimeErrorexception is raised if you try to makevalueaware during a DST transition where the same time occurs twice (when reverting from DST). Settingis_dsttoTrueorFalsewill avoid the exception by choosing if the time is pre-transition or post-transition respectively.The
pytz.NonExistentTimeErrorexception is raised if you try to makevalueaware during a DST transition such that the time never occurred. For example, if the 2:00 hour is skipped during a DST transition, trying to make 2:30 aware in that time zone will raise an exception. To avoid that you can useis_dstto specify howmake_aware()should interpret such a nonexistent time. Ifis_dst=Truethen the above time would be interpreted as 2:30 DST time (equivalent to 1:30 local time). Conversely, ifis_dst=Falsethe time would be interpreted as 2:30 standard time (equivalent to 3:30 local time).
- make_naive(value, timezone=None)¶
Возвращает простой
datetime, который представляет вtimezoneтот же момент времени, что иvalue,valueявляется осведомленнымdatetime. Если дляtimezoneустановлено значениеNone, по умолчанию используется текущий часовой пояс <default-current-time-zone>`.
django.utils.translation¶
Подробное обсуждение использования следующего см. в документации по переводу.
- gettext(message)¶
Переводит
messageи возвращает его в виде строки.
- pgettext(context, message)¶
Переводит
messageс учетомконтекстаи возвращает его в виде строки.Для получения дополнительной информации см. Контекстные маркеры.
- gettext_lazy(message)¶
- pgettext_lazy(context, message)¶
То же, что и неленивые версии выше, но с использованием ленивого выполнения.
См. документацию по ленивым переводам <lazy-translations>`.
- gettext_noop(message)¶
Помечает строки для перевода, но сейчас не переводит их. Это можно использовать для хранения строк в глобальных переменных, которые должны оставаться на базовом языке (поскольку они могут использоваться извне) и будут переведены позже.
- ngettext(singular, plural, number)¶
Преобразует «единственное» и «множественное» число и возвращает соответствующую строку на основе «числа».
- npgettext(context, singular, plural, number)¶
Переводит «единственное» и «множественное» число и возвращает соответствующую строку на основе «числа» и «контекста».
- ngettext_lazy(singular, plural, number)¶
- npgettext_lazy(context, singular, plural, number)¶
То же, что и неленивые версии выше, но с использованием ленивого выполнения.
См. документацию по ленивым переводам <lazy-translations>`.
- activate(language)¶
Извлекает объект перевода для данного языка и активирует его как текущий объект перевода для текущего потока.
- deactivate()¶
Деактивирует текущий активный объект перевода, чтобы дальнейшие вызовы _ снова разрешались для объекта перевода по умолчанию.
- deactivate_all()¶
Делает активный объект перевода экземпляром NullTranslations(). Это полезно, когда мы хотим, чтобы по какой-то причине отложенные переводы отображались как исходная строка.
- override(language, deactivate=False)¶
Менеджер контекста Python, который использует
django.utils.translation.activate()для получения объекта перевода для данного языка, активирует его как объект перевода для текущего потока и повторно активирует предыдущий активный язык при выходе. При желании он может деактивировать временный перевод при выходе с помощьюdjango.utils.translation.deactivate(), если аргументdeactivateимеет значениеTrue. Если вы передадите None в качестве аргумента языка, в контексте активируется экземпляр NullTranslations().overrideтакже можно использовать в качестве декоратора функции.
- check_for_language(lang_code)¶
Проверяет, существует ли глобальный языковой файл для данного кода языка (например, «fr», «pt_BR»). Это используется для определения доступности языка, предоставленного пользователем.
- get_language()¶
Возвращает текущий выбранный код языка. Возвращает None, если переводы временно отключены (с помощью
deactivate_all()или когдаNoneпередается вoverride()).
- get_language_bidi()¶
Возвращает макет BiDi выбранного языка:
False= расположение слева направо.True= расположение справа налево.
- get_language_from_request(request, check_path=False)¶
Анализирует запрос, чтобы определить, какой язык пользователь хочет, чтобы система отображала. Учитываются только языки, указанные в настройках.ЯЗЫКИ. Если пользователь запрашивает подъязык, где у нас есть основной язык, мы отправляем основной язык.
Если
check_pathимеет значениеTrue, функция сначала проверяет запрошенный URL-адрес на предмет того, начинается ли его путь с кода языка, указанного в настройкеLANGUAGES.
- get_supported_language_variant(lang_code, strict=False)¶
Возвращает
lang_code, если он указан в настройкеLANGUAGES, возможно, выбирая более общий вариант. Например,'es'возвращается, еслиlang_codeравен'es-ar'и'es'находится вLANGUAGES, а'es-ar'нет.Если
strictимеет значениеFalse(по умолчанию), вариант для конкретной страны может быть возвращен, если не найден ни код языка, ни его общий вариант. Например, если вLANGUAGESнаходится только'es-co', он возвращается дляlang_code, например'es'и'es-ar'. Эти совпадения не возвращаются, еслиstrict=True.Вызывает
LookupError, если ничего не найдено.
- to_locale(language)¶
Превращает имя языка (en-us) в имя локали (en_US).
- templatize(src)¶
Превращает шаблон Django во что-то, что понимается
xgettext. Это делается путем перевода тегов перевода Django в стандартные вызовы функции gettext.
- LANGUAGE_SESSION_KEY¶
Session key under which the active language for the current session is stored.
Не рекомендуется, начиная с версии 3.0: The language won’t be stored in the session in Django 4.0. Use the
LANGUAGE_COOKIE_NAMEcookie instead.