达吉奥乌蒂斯

本文件涵盖了 django.utils . 中的大多数模块 django.utils 是为内部使用而设计的,根据 internal release deprecation policy .

django.utils.cache

此模块包含用于控制HTTP缓存的帮助程序函数。它通过管理 Vary 响应的标题。它包括直接修补响应对象头的函数,以及更改函数以自己修补头的修饰符。

以获取有关 Vary 标题,请参见 RFC 9110#section-12.5.5

基本上, Vary HTTP头定义在构建缓存键时缓存应考虑哪些头。中名为的头具有相同路径但不同的头内容的请求 Vary 需要获取不同的缓存键以防止传递错误的内容。

例如, internationalization 中间件需要通过 Accept-language 标题。

patch_cache_control(response, **kwargs)[源代码]

此函数用于修补 Cache-Control 通过将所有关键字参数添加到标题。改造如下:

  • 所有关键字参数名称都转换为小写,下划线转换为连字符。

  • 如果参数的值为 True (确切地说 True ,而不仅仅是一个真值),只有参数名被添加到头中。

  • 应用后,所有其他参数都将与其值一起添加。 str() 对它。

get_max_age(response)[源代码]

以整数形式返回响应缓存控制头中的最大期限(或 None 如果找不到或不是整数)。

patch_response_headers(response, cache_timeout=None)[源代码]

向给定的 HttpResponse 对象:

  • Expires

  • Cache-Control

只有在尚未设置的情况下才会添加每个标题。

cache_timeout 是秒。这个 CACHE_MIDDLEWARE_SECONDS 默认情况下使用设置。

add_never_cache_headers(response)[源代码]

添加一个 Expires 标题设置为当前日期/时间。

添加一个 Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private 响应的头,指示永远不应缓存页。

只有在尚未设置的情况下才会添加每个标题。

patch_vary_headers(response, newheaders)[源代码]

添加(或更新) Vary 给定头中的 HttpResponse 对象。 newheaders 是应位于以下位置的标头名称列表 Vary 。如果标头包含星号,则 Vary 页眉将由单个星号组成 '*' ,根据 RFC 9110#section-12.5.5 。否则,中的现有头 Vary 并没有被移除。

get_cache_key(request, key_prefix=None, method='GET', cache=None)[源代码]

基于请求路径返回缓存密钥。它可以在请求阶段使用,因为它从全局路径注册表中提取要考虑的头列表,并使用这些头构建缓存项进行检查。

如果没有存储HeaderList,则需要重新生成页面,因此此函数返回 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 .

parse_datetime(value)[源代码]

分析字符串并返回 datetime.datetime .

支持UTC偏移;如果 value 描述一个,结果是 tzinfo 属性是 datetime.timezone 实例。

parse_duration(value)[源代码]

分析字符串并返回 datetime.timedelta .

预期数据的格式为 "DD HH:MM:SS.uuuuuu""DD HH:MM:SS,uuuuuu" ,或按照ISO 8601的规定(例如。 P4DT1H15M20S 相当于 4 1:15:20 )或PostgreSQL的日时间间隔格式(例如 3 days 04:05:06

django.utils.decorators

method_decorator(decorator, name='')[源代码]

将函数修饰符转换为方法修饰符。它可以用于修饰方法或类;在后一种情况下, name 是要修饰的方法的名称,并且是必需的。

decorator 也可以是函数的列表或元组。它们以相反的顺序包装,以便调用顺序是函数在列表/元组中出现的顺序。

decorating class based views 例如用法。

decorator_from_middleware(middleware_class)[源代码]

给定一个中间件类,返回一个视图修饰符。这允许您在每个视图的基础上使用中间件功能。创建中间件时没有传递任何参数。

它假定中间件与Django1.9和更早版本的旧样式兼容(具有类似于 process_request()process_exception()process_response()

decorator_from_middleware_with_args(middleware_class)[源代码]

喜欢 decorator_from_middleware ,但返回一个接受要传递给中间件类的参数的函数。例如, cache_page() 修饰符是从 CacheMiddleware 这样地::

cache_page = decorator_from_middleware_with_args(CacheMiddleware)


@cache_page(3600)
def my_view(request):
    pass
sync_only_middleware(middleware)[源代码]

将中间件标记为 synchronous-only . (Django中的默认值,但如果默认值在将来的版本中发生更改,则允许您进行将来的验证。)

async_only_middleware(middleware)[源代码]

将中间件标记为 asynchronous-only . 当从WSGI请求路径调用它时,Django将把它包装在异步事件循环中。

sync_and_async_middleware(middleware)[源代码]

将中间件标记为 sync and async compatible ,这样可以避免转换请求。必须实现对当前请求类型的检测才能使用此装饰器。看到了吗 asynchronous middleware documentation 有关详细信息。

django.utils.encoding

smart_str(s, encoding='utf-8', strings_only=False, errors='strict')[源代码]

返回A str 表示任意对象的对象 s . 使用 encoding 编解码器。

如果 strings_onlyTrue ,不要转换(某些)非字符串类型的对象。

is_protected_type(obj)[源代码]

确定对象实例是否为受保护类型。

受保护类型的对象在传递到 force_str(strings_only=True) .

force_str(s, encoding='utf-8', strings_only=False, errors='strict')[源代码]

类似 smart_str() ,除了惰性实例解析为字符串,而不是作为惰性对象保留。

如果 strings_onlyTrue ,不要转换(某些)非字符串类型的对象。

smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict')[源代码]

返回任意对象的字节字符串版本 s ,按中的规定编码 encoding .

如果 strings_onlyTrue ,不要转换(某些)非字符串类型的对象。

force_bytes(s, encoding='utf-8', strings_only=False, errors='strict')[源代码]

类似 smart_bytes ,除了惰性实例解析为字节字符串,而不是作为惰性对象保留。

如果 strings_onlyTrue ,不要转换(某些)非字符串类型的对象。

iri_to_uri(iri)[源代码]

将国际化资源标识符(IRI)部分转换为适合包含在URL中的URI部分。

这是第3.1节中的算法 RFC 3987#section-3.1 ,稍微简化了一点,因为假设输入是字符串而不是任意字节流。

获取IRI(字符串或UTF-8字节)并返回包含编码结果的字符串。

uri_to_iri(uri)[源代码]

将统一资源标识符转换为国际化资源标识符。

这是第3.2节中的算法 RFC 3987#section-3.2 .

以ASCII字节为单位获取一个URI,并返回一个包含编码结果的字符串。

filepath_to_uri(path)[源代码]

将文件系统路径转换为适合包含在URL中的URI部分。UTF或者假定路径是字节-8 Path .

此方法将对某些通常被识别为URI特殊字符的字符进行编码。请注意,此方法不编码'字符,因为它是URI中的有效字符。见 encodeURIComponent() 有关详细信息,请参阅javascript函数。

返回包含编码结果的ASCII字符串。

escape_uri_path(path)[源代码]

从统一资源标识符(URI)的路径部分转义不安全字符。

django.utils.feedgenerator

示例用法:

>>> from django.utils import feedgenerator
>>> feed = feedgenerator.Rss201rev2Feed(
...     title="Poynter E-Media Tidbits",
...     link="https://www.poynter.org/tag/e-media-tidbits/",
...     description="A group blog by the sharpest minds in online media/journalism/publishing.",
...     language="en",
... )
>>> feed.add_item(
...     title="Hello",
...     link="https://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)[源代码]

创建Taguri。

参见https://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id

SyndicationFeed

class SyndicationFeed[源代码]

所有联合订阅源的基类。子类应该提供 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)[源代码]

使用给定的元数据字典初始化源,该字典适用于整个源。

传递给的任何其他关键字参数 __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)[源代码]

向源中添加项。所有参数都应为字符串,除非 pubdateupdateddate 这些都是 datetime.datetime 对象,以及 enclosures ,这是一个列表 Enclosure 实例。

num_items()[源代码]
root_attributes()[源代码]

返回要放置在根(即feed/channel)元素上的额外属性。调用来 write() .

add_root_elements(handler)[源代码]

在根(即feed/channel)元素中添加元素。调用来 write() .

item_attributes(item)[源代码]

返回要放置在每个item(即item/entry)元素上的额外属性。

add_item_elements(handler, item)[源代码]

在每个项目(即项目/条目)元素上添加元素。

write(outfile, encoding)[源代码]

将给定编码的馈送输出到 outfile ,这是一个类似文件的对象。子类应该覆盖这个。

writeString(encoding)[源代码]

以字符串形式返回给定编码的源。

latest_post_date()[源代码]

返回最新的 pubdateupdateddate 订阅源中的所有项目。如果没有任何项具有这些属性,则返回当前的UTC日期/时间。

Enclosure

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

class Atom1Feed(SyndicationFeed)[源代码]

规格: RFC 4287

django.utils.functional

class cached_property(func)[源代码]

这个 @cached_property decorator用一个 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"]

因为这样 descriptor protocol 作品,使用 del (或) delattrcached_property 还没有得到加薪 AttributeError .

以及提供潜在的性能优势, @cached_property 可以确保属性的值在实例的生命周期内不会意外更改。这可能发生在计算基于 datetime.now() ,或者在同一实例上的方法的后续调用之间的短暂间隔内,某个其他进程将更改保存到数据库中。

您可以使方法的缓存属性。例如,如果你有一个昂贵的 get_friends() 方法并希望允许在不检索缓存值的情况下调用它,可以写入:

friends = cached_property(get_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
class classproperty(method=None)[源代码]

类似 @classmethod , the @classproperty decorator使用单个 cls 参数转换为可直接从类访问的属性。

keep_lazy(func, *resultclasses)[源代码]

Django提供许多实用功能(尤其是 django.utils )把一个字符串作为第一个参数,并对该字符串做些什么。这些函数由模板过滤器以及直接在其他代码中使用。

如果您编写自己的类似函数并处理翻译,那么当第一个参数是一个懒惰的翻译对象时,您将面临如何处理的问题。您不希望立即将其转换为字符串,因为您可能在视图外部使用此函数(因此当前线程的区域设置将不正确)。

对于这种情况,请使用 django.utils.functional.keep_lazy() 装饰符。它修改函数以便 if 它的参数之一是用一个惰性转换来调用,函数计算会被延迟,直到需要将其转换为字符串为止。

例如::

from django.utils.functional import keep_lazy, keep_lazy_text


def fancy_utility_function(s, *args, **kwargs):
    # 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, *args, **kwargs):
    ...

这个 keep_lazy() decorator接受许多额外的参数 (*args )指定原始函数可以返回的类型。一个常见的用例是具有返回文本的函数。为了这些,你可以通过 str 类型到 keep_lazy (或使用 keep_lazy_text() 下一节描述的decorator)。

使用这个修饰器意味着您可以编写函数并假定输入是一个适当的字符串,然后在末尾添加对惰性转换对象的支持。

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, *args, **kwargs):
    ...


# Which can be rewritten as:
@keep_lazy_text
def fancy_utility_function(s, *args, **kwargs):
    ...

django.utils.html

通常,应该使用django的模板构建HTML,以利用其自动转义机制,并使用 django.utils.safestring 在适当的情况下。此模块提供一些附加的低级实用程序来转义HTML。

escape(text)[源代码]

返回给定文本,其中包含为在HTML中使用而编码的符号、引号和尖括号。首先将输入强制为字符串,然后输出 mark_safe() 应用。

conditional_escape(text)[源代码]

类似于 escape() ,只是它不对预先转义的字符串进行操作,所以它不会双重转义。

format_html(format_string, *args, **kwargs)[源代码]

这类似于 str.format() ,只是它适用于构建HTML片段。第一个论点 format_string 不是转义的,但所有其他参数和Kwarg都通过 conditional_escape() 在被传递给 str.format() 。最后,输出具有 mark_safe() 已申请。

对于构建小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() 价值观。

自 5.0 版本弃用: 支持呼叫 format_html() 不传递args或kwargs是不推荐使用的。

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))
json_script(value, element_id=None, encoder=None)[源代码]

使用其Unicode转义对所有的HTML/XML特殊字符进行转义,因此Value可以安全地与JavaScript一起使用。还将转义的JSON包装在 <script> 标签。如果 element_id 参数不是 None vt.的. <script> 标记被赋予了传递的id。例如:

>>> json_script({"hello": "world"}, element_id="hello-data")
'<script id="hello-data" type="application/json">{"hello": "world"}</script>'

这个 encoder ,它缺省为 django.core.serializers.json.DjangoJSONEncoder ,将用于序列化数据。看见 JSON serialization 有关此序列化程序的更多详细信息。

strip_tags(value)[源代码]

尝试从字符串中删除任何看起来像HTML标记的内容,这些内容包含在 <> .

绝对不能保证生成的字符串是HTML安全的。所以永远不要把一个 strip_tag 调用而不首先转义它,例如 escape() .

例如::

strip_tags(value)

如果 value"<b>Joel</b> <button>is</button> a <span>slug</span>" 返回值为 "Joel is a slug" .

如果您正在寻找更健壮的解决方案,请考虑使用第三方HTML清理工具。

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)[源代码]

格式化时间以匹配 RFC 1123#section-5.2.14 由HTTP指定的日期格式 RFC 9110#section-5.6.7

接受自UTC中的epoch以来以秒表示的浮点数,例如由 time.time() . 如果设置为 None ,默认为当前时间。

以格式输出字符串 Wdy, DD Mon YYYY HH:MM:SS GMT .

content_disposition_header(as_attachment, filename)[源代码]

构造了一个 Content-Disposition 来自给定的HTTP标头值 filename 由指定的 RFC 6266 。退货 None 如果 as_attachmentFalsefilenameNone ,否则将返回一个适合 Content-Disposition HTTP标头。

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[源代码]

A str 专门标记为“安全”的子类(不需要进一步转义),用于HTML输出目的。

mark_safe(s)[源代码]

为了(HTML)输出目的,显式地将字符串标记为安全字符串。返回的对象可以在字符串合适的任何地方使用。

可以在单个字符串上多次调用。

也可用作装饰。

对于构建HTML片段,通常应该使用 django.utils.html.format_html() 相反。

标记为SAFE的字符串如果被修改,将再次变得不安全。例如:

>>> 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_stringargs 和/或 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(value, allow_unicode=False)[源代码]

通过以下方式将字符串转换为URL段塞:

  1. 转换为ASCII if allow_unicodeFalse (默认值)。

  2. 转换为小写。

  3. 删除不是字母数字、下划线、连字符或空格的字符。

  4. 用单个破折号替换任何空白或重复的破折号。

  5. 删除前导和尾随空格、破折号和下划线。

例如:

>>> slugify(" Joel is a slug ")
'joel-is-a-slug'

如果要允许使用Unicode字符,请传递 allow_unicode=True 。例如:

>>> slugify("你好 World", allow_unicode=True)
'你好-world'

django.utils.timezone

get_fixed_timezone(offset)[源代码]

返回A tzinfo 表示与UTC有固定偏移量的时区的实例。

offset 是一个 datetime.timedelta 或整数分钟数。对于UTC以东的时区使用正值,对于UTC以西的时区使用负值。

get_default_timezone()[源代码]

返回A tzinfo 表示的实例 default time zone .

get_default_timezone_name()[源代码]

返回的名称 default time zone .

get_current_timezone()[源代码]

返回A tzinfo 表示的实例 current time zone .

get_current_timezone_name()[源代码]

返回的名称 current time zone .

activate(timezone)[源代码]

设置 current time zone . 这个 timezone 参数必须是 tzinfo 子类或时区名称。

deactivate()[源代码]

颠覆 current time zone .

override(timezone)[源代码]

这是一个python上下文管理器,用于设置 current time zone 进入与 activate() ,并在退出时恢复先前活动的时区。如果 timezone 论证是 None , the current time zone 在输入时取消设置 deactivate() 相反。

override 也可用作函数修饰器。

localtime(value=None, timezone=None)[源代码]

转换感知 datetime 到其他时区,默认情况下 current time zone .

什么时候? value 省略,默认为 now() .

此函数不适用于原始日期时间;使用 make_aware() 相反。

localdate(value=None, timezone=None)[源代码]

使用 localtime() 转换意识 datetime 到A date() 在不同的时区中,默认情况下 current time zone .

什么时候? value 省略,默认为 now() .

此函数不适用于原始日期时间。

now()[源代码]

返回A datetime 表示当前时间点。具体返回的内容取决于 USE_TZ

  • 如果 USE_TZFalse ,这将是一个 naive 表示系统本地时区中当前时间的日期时间(即没有关联时区的日期时间)。

  • 如果 USE_TZTrue ,这将是一个 aware 日期时间,以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)[源代码]

返回一个已知 datetime 表示与 value 在里面 timezonevalue 幼稚 datetime .如果 timezone 设置为 None ,默认为 current time zone .

make_naive(value, timezone=None)[源代码]

返朴归真 datetime 代表 timezone 同一时间点 valuevalue 有意识 datetime .如果 timezone 设置为 None ,默认为 current time zone .

django.utils.translation

有关以下用法的完整讨论,请参阅 translation documentation .

gettext(message)[源代码]

翻译 message 并将其作为字符串返回。

pgettext(context, message)[源代码]

翻译 message 鉴于 context 并将其作为字符串返回。

有关详细信息,请参阅 上下文标记 .

gettext_lazy(message)
pgettext_lazy(context, message)

与上面的非惰性版本相同,但使用惰性执行。

lazy translations documentation .

gettext_noop(message)[源代码]

标记字符串进行翻译,但现在不进行翻译。这可用于将字符串存储在全局变量中,这些变量应保持在基础语言中(因为它们可能在外部使用),并将在以后进行转换。

ngettext(singular, plural, number)[源代码]

翻译 singularplural 并返回基于 number .

npgettext(context, singular, plural, number)[源代码]

翻译 singularplural 并返回基于 number 以及 context .

ngettext_lazy(singular, plural, number)[源代码]
npgettext_lazy(context, singular, plural, number)[源代码]

与上面的非惰性版本相同,但使用惰性执行。

lazy translations documentation .

activate(language)[源代码]

获取给定语言的翻译对象,并将其激活为当前线程的当前翻译对象。

deactivate()[源代码]

停用当前活动的翻译对象,以便进一步调用将再次针对默认翻译对象进行解析。

deactivate_all()[源代码]

使活动翻译对象成为 NullTranslations() 实例。当我们出于某种原因希望延迟的翻译显示为原始字符串时,这很有用。

override(language, deactivate=False)[源代码]

使用 django.utils.translation.activate() 要获取给定语言的翻译对象,请将其激活为当前线程的翻译对象,并在退出时重新激活以前的活动语言。或者,它可以在退出时使用 django.utils.translation.deactivate() 如果 deactivate 论证是 True . 如果你通过 None 作为语言论证,a 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)[源代码]

分析请求,找出用户希望系统显示的语言。只考虑settings.languages中列出的语言。如果用户请求一个子语言,其中我们有一个主语言,我们发送主语言。

如果 check_pathTrue ,函数首先检查请求的URL的路径是否以中列出的语言代码开头。 LANGUAGES 设置。

get_supported_language_variant(lang_code, strict=False)[源代码]

返回 lang_code 如果它在 LANGUAGES 设置,可能选择更通用的变体。例如, 'es' 如果返回 lang_code'es-ar''es' 是在 LANGUAGES 但是 'es-ar' 不是。

如果 strictFalse (默认值),当未找到语言代码或其通用变量时,可以返回特定于国家/地区的变量。例如,如果只有 'es-co' 是在 LANGUAGES ,返回 lang_code 类的 'es''es-ar' . 如果 strict=True .

加薪 LookupError 如果找不到任何东西。

to_locale(language)[源代码]

将语言名称(en-us)转换为区域设置名称(en-us)。

templatize(src)[源代码]

将django模板转换为可以被 xgettext . 它通过将django翻译标记转换为标准来实现。 gettext 函数调用。