django源码分析-utils模块分析


该模块是django的工具类,内容比较多,我们选几个重要的来介绍一下:

django.utils.cache

该模块包含用于控制HTTP缓存的辅助函数。它通过管理Vary响应的标题来实现。它包括直接修补响应对象头部的函数和修改函数的修饰器,以自己进行头部修补。

django.utils.dateparse

此模块中定义的函数共享以下属性:

  • 它们接受ISO 8601日期/时间格式的字符串(或一些接近的替代)并从Python datetime模块中的相应类返回对象 。
  • ValueError如果他们的输入格式正确但不是有效的日期或时间,他们会提高。
  • None如果格式不完整,它们会返回。
  • 它们在输入中接受高达皮秒的分辨率,但是它们将其截断为微秒,因为这是Python支持的。

django.utils.decorators

method_decorator(装饰者,名称='')

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

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

有关示例用法,请参阅装饰基于类的视图。

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

django.utils.encoding

字符编码

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')

django.utils.html

通常你应该使用Django的模板来构建HTML以利用它的自动景观机制,django.utils.safestring 在适当的地方使用实用程序。此模块提供了一些用于转义HTML的其他低级实用程序。

django.utils.text

文本格式化

django.utils.timezone

时区处理

更多Django教程

学习更多Django教程