分类目录归档:Django

django源码分析-view模块分析


django view 视图模块,非常重要,它可以响应客户端请求,并处理逻辑,并做出响应。

视图分为视图函数和视图类。该模块主要是django视图类的实现。

decorators

通过装饰器设计模式,添加更多功能,这里大部分是对middleware模块功能的添加。

generic

基本视图实现类,内容包括:

__all__ = [
    'View', 'TemplateView', 'RedirectView', 'ArchiveIndexView',
    'YearArchiveView', ...

阅读全文...

django源码分析-utils模块分析


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

django.utils.cache

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

django.utils.dateparse

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

  • 它们接受ISO 8601日期/时间格式的字符串(或一些接近的替代)并从Python datetime模块中的相应类返回对象 。
  • ValueError如果他们的输入格式正确但不是有效的日期或时间,他们会提高。
  • None如果格式不完整,它们会返回。
  • 它们...

阅读全文...

django源码分析-urls模块分析


该模块是django的url路由模块,url路由是django程序的入口,用户发出一个请求,该请求匹配url列表,通过url来定位视图,视图处理请求,并做出响应。

  • init.py : django 路由模块初始化文件。
  • base.py : django路由基类,我们常用的reverseresolve函数都在该模块。
  • conf.py : django路由模块配置类,includepathre_path函数都在这个模块。
  • converters.py :django路由转换器,对url参数的转换,例如:int类型、字符串string类型。
  • exceptions.py :django路由...

阅读全文...

django源码分析-test模块分析


该模块是django的单元测试模块,测试web应用是个复杂的任务,因为web应用由很多的逻辑层组成 -- 从HTTP层面的请求处理,到表单验证和处理,到模板渲染。使用Django的测试执行框架和各种各样的工具,你可以模拟请求,插入测试数据,检查你的应用的输出,以及大体上检查你的代码是否做了它应该做的事情。

Django的单元测试依赖于Python的unittest模块。

编写测试用例

from django.test import TestCase
from myapp.models import Animal

class AnimalTestCase(TestCase):
    d...

阅读全文...

django源码分析-templatetags模块分析


该模块是django系统定义的一些特殊标签,包括:缓存、国际化、本地化、静态资源、时区等。

  • init.py :模块初始化文件。
  • cache.py : 缓存标签,用法:
{% load cache %}
{% cache [expire_time] [fragment_name] %}
    .. some expensive processing ..
{% endcache %}
  • i18n.py : django对国际化标签的支持。这里先科普一些 i18n和i10n。

国际化是指把原来为英文设计的计算机系统或者应用软件改写成同时支持多种语言和文化习俗的过程。在英文中,国际化(...

阅读全文...

django源码分析-template模块分析


该模块实现django的模板引擎,django模板引擎可以使用自身的模板引擎和Jinja2,如果使用Jinja2,需要安装:

pip install Jinja2

当我们创建好django项目后,在settings.py配置文件中有一部分就是对django模板的配置:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS':...

阅读全文...

django源码分析-middleware模块分析


首先,我们要理解一下什么是django中间件,也就是middleware,django中间件是在请求和响应之间的一个 拦截器。如果,你有Java编程经验,例如:spring框架中的Aspect编程,和它是一个道理,只不过叫法不一样。当我们创建好一个django项目时,你会看到settings.py配置文件中会有这样一段配置:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddle...

阅读全文...

django源码分析-http模块分析


django http模块实现django的网络功能,实现请求(HttpRequest)和响应(HttpResponse),我们视图中的request参数和返回的response对象,就来自这个模块。该模块的内容如下:

  • init.py : django http模块初始化文件,实现导入。
from django.http.cookie import SimpleCookie, parse_cookie
from django.http.request import (
    HttpRequest, QueryDict, RawPostDataException, Unreadab...

阅读全文...

django源码分析-form表单模块分析


django form模块实现form表单功能,为用户提交数据提供了一个接口。该模块下面的内容如下:

  • jinja2 : 使用jinja2模板引擎实现的django form表单,里面是各种widgets的html页面模板,例如:inputCheckBoxdateemailfile等等。
  • templates : 这个是django默认的模板引擎实现form表单。里面也是各种widgets的html页面模板,例如:inputCheckBoxdateemailfile等等。
  • init.py : 模块初始文件,主要实现导入功能。
"""
Djan...

阅读全文...

django源码分析-dispatch模块分析


dispatch模块,引用了第三方的模块PyDispatcher,实现请求分发功能

该模块下面包含的内容:

  • init.py :模块初始文件,导入from django.dispatch.dispatcher import Signal, receiver
  • dispatcher.py :该模块的核心类,实现请求的分发:
import threading
import weakref

from django.utils.inspect import func_accepts_kwargs


def _make_id(target):
    if hasattr(target, &#...

阅读全文...