`
fudehai001
  • 浏览: 497084 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

浅析 Django 处理流程 和 结构分析 django

阅读更多

PythonWeb框架中,Django是比较成功的。

它是一个高级Python web framework,鼓励快速开发和干净的、MVC设计。

包括一个模板系统,对象相关的映射和用于动态创建管理界面的框架。支持ORMCache i18nAdmin等众多特性,是为了满足“Deadlines”项目而开发的。

先介绍一下目录结构:
conf: 
主要有两个作用:1) 处理全局配置比如数据库、加载的应用、MiddleWare 2) 处理urls配置就是urlview的映射关系。

contrib:Django的开发者贡献的功能模块,不过既然都已经随版本发布,就表示是官方的。

core: Django的核心处理库,包括url分析、处理请求、缓存等,其中处理请求是核心了,比如处理fastcgi就是由wsgi.py处理。

db: 顾名思义,处理与数据库相关的,就是ORM

dispatch: 其实这不是Django原创,是pydispatch库,主要处理消费者-工作者模式。

forms newforms oldforms: 处理html的表单,不用多介绍。

middleware: 中间件,就是处理HTTPrequestresponse的,类似插件。比如默认的common中间件的一个功能:当一个页面没有找对对应的pattern时,会自定加上‘/’重新处理。比如访问/blog时,而定义的pattern‘^blog/$’,所以找不到对应的pattern,会自动再用/blog/查找,当然前提是APPEND_SLASH=True

template: Django的模板,我个人认为这块是非常有创意的。

templatetags: 处理Applicationtagwrapper,就是将INSTALLED_APPS中所有的templatetags目录添加到 django.templatetags目录中,则当使用 {{load blog}}记载tag时,就可以使用 import django.templatetags.blog 方式加载了。不过这有一个问题,如果其他Application目录中也有blog.py,这会加载第一个出现blog.pytag。其实在 Django中,有许多需要处理重名的地方,比如template,需要格外小心,这个后续在介绍。

utils: 公共库,很多公用的类都在放在这里。

views: 最基本的view方法。

Django几个重要的概念:
Project: 
指一个完整的Web服务,一般由多个模块组成。

Application: 可以理解为模块,比如用户管理、博客管理等,包含了数据的组成和数据的显示,Applicaiton都需要在project/settings.pyINSTALLED_APPS的定义。


Middleware: 
就是处理requestresponse的插件, Middleware都需要在project/settings.pyMIDDLEWARE_CLASSES的定义。

Loader: 模板加载器其实就是为了读取Template文件的类,默认的有通过文件系统加载和在Application/template目录中加载,Loader都需要在project/settings.pyTEMPLATE_LOADERS的定义。

下面以fastcgi方式为例,Django的版本是“0.97-pre-SVN-7053″

其实和其他Web框架一样,HTTP处理的流程大致相同(但和TomcatJava容器不相同)

比如request->response.

0) 加载配置
Django
的配置都在Project/settings.py中定义,可以是Django的配置,也可以是自定义的配置,并且都通过django.conf.settings访问,非常方便。

1) 启动
最核心动作的是通过django.core.management.commands.runfcgiCommand来启动,它运行django.core.servers.fastcgi中的runfastcgirunfastcgi使用了flupWSGIServer来启动fastcgi。而WSGIServer中携带了django.core.handlers.wsgiWSGIHandler类的一个实例,通过WSGIHandler来处理由Web服务器(比如ApacheLighttpd)传过来的请求,此时才是真正进入Django的世界。

2) 处理Request
当有HTTP请求来时,WSGIHandler就开始工作了,它从 BaseHandler继承而来。WSGIHandler为每个请求创建一个WSGIRequest实例,而WSGIRequest是从 http.HttpRequest继承而来。接下来就开始创建Response.

3) 创建Response
BaseHandler
get_response方法就是根据request创建 response,而具体生成response的动作就是执行urls.py中对应的view函数了,这也是Django可以处理友好URL”的关键步骤,每个这样的函数都要返回一个Response实例。此时一般的做法是通过loader加载template并生成页面内容,其中重要的就是通过ORM 技术从数据库中取出数据,并渲染到Template中,从而生成具体的页面了

4) 处理Response
Django
返回Responseflupflup就取出Response的内容返回给Web服务器,由后者返回给浏览器。

总之,Djangofastcgi中主要做了两件事:处理Request和创建Response,而它们对应的核心就是“urls分析模板技术“ORM技术,这些留在以后分析。附图
f8437b5848234d94810a1817

 

分享到:
评论

相关推荐

    浅析Django处理流程和结构分析django.doc

    Django 框架处理流程和结构分析 Django 是一个高级 Python Web 框架,鼓励快速开发和干净的、MVC 设计。它包括一个模板系统、对象相关的映射和用于动态创建管理界面的框架。支持 ORM、Cache、i18n、Admin 等众多...

    基于Django的流程引擎设计源码

    这是一个基于Django的流程引擎设计,使用Python、HTML、CSS和JavaScript语言开发,包含136个文件。主要文件类型包括68个Python源文件、...该项目是一个基于Django的流程引擎,适合用于个人学习和实践Django的开发技术。

    高效易用Django流程引擎源码 - django-lb-workflow

    项目概述:django-lb-workflow 是一个基于Python的高效易用Django...综合来看,django-lb-workflow是一个功能全面、易于集成的Django流程引擎,非常适合需要在现有系统中快速引入流程管理功能的开发者和项目团队使用。

    基于django的工作流引擎,工单(a workflow engine base on django python).zip

    Django提供了一整套功能,包括数据库管理、用户认证、表单处理和URL路由,使得开发者可以快速构建功能丰富的网站应用程序。 【工作流引擎】 工作流引擎是工单系统的核心组件,它负责定义、执行和管理工作流实例。在...

    python实现基于Django+vue的基金分析可视化系统源码(95分以上期末大作业).zip

    python实现基于Django+vue的基金分析可视化系统源码(95分以上期末大作业).zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行! python实现基于Django+vue的基金分析可视化系统...

    django笔记 django笔记

    Django是Python编程语言中的一款强大且流行的Web框架,它以“快速开发”和“约定优于配置”的理念为核心,让开发者能够高效地构建高质量的Web应用程序。本笔记将深入探讨Django的基础概念、核心功能以及实际应用。 ...

    Python-django项目结构布局

    掌握Django项目的结构布局对于高效开发和维护Web应用程序至关重要。理解这些组件以及它们如何相互协作,将使你能够更好地组织和管理你的Django项目。在实际开发过程中,根据项目需求,你可能会对默认的结构进行适当...

    内网利用 django 及 pyecharts 做数据分析展示

    在内网环境中利用 Django 和 Pyecharts 进行数据分析展示是一项常见的需求,特别是在企业内部,数据的安全性尤为重要。Django 是一个强大的 Python Web 框架,而 Pyecharts 是一个用于生成 ECharts 图表的 Python 库...

    django电子商务网站源码.zip

    django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django...

    Django引用ztree实现数据库表导入树状目录

    在Django中,Model负责数据模型,Template处理视图呈现,View则负责业务逻辑和数据处理。 2. MySQL数据库集成: Django支持多种数据库,包括MySQL。通过配置settings.py文件中的DATABASES设置,我们可以将Django...

    Django实现商城网站源码.zip

    Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django...

    django4.0官方中文文档

    7. **中间件(Middleware)**:中间件是Django框架中的一个特殊组件,它可以全局地影响请求和响应流程。开发者可以利用中间件实现日志记录、权限控制、会话管理等多种功能。 8. **国际化和本地化(i18n & l10n)**...

    Django客户管理系统源码.zip

    Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统...

    django+scrapy结合

    通过以上步骤,我们可以构建出一个基于Django的爬虫管理平台,用户可以直接在Web界面中启动和监控Scrapy爬虫,同时爬取的数据会被自动存入Django的数据库,便于进一步分析和展示。这种结合充分利用了两个框架的优势...

    django课件和代码

    **Django框架详解** Django,一个由Python语言编写的高级Web开发框架,以其“快速、优雅、可扩展”的特点深受开发者喜爱。...在实际学习过程中,结合课件的理论讲解和源码分析,相信能让你在Django的道路上更进一步。

    Django_layui后台模板

    在Django中,Model用于处理数据模型,View负责业务逻辑和视图呈现,Template则是用于展示数据的模板系统。Django提供了一系列内置功能,如ORM(对象关系映射)、表单处理、认证与授权、URL路由、中间件等,极大地...

    Django中文版 教程.

    9. 测试Django应用程序:讲解了如何编写和运行Django的自动化测试,确保代码质量和维护方便。 10. 部署Django应用程序:教程最后指导了如何将Django应用部署到生产环境,包括关键设置、性能调优和生产环境的设置。 ...

    Django Web开发指南.pdf

    Django的表单模块为创建和处理HTML表单提供了简便的方法: - 表单类的定义。 - 表单的验证机制。 - 表单在视图和模板中的处理。 8. Django的静态文件和媒体文件: Django提供了管理静态文件和媒体文件的机制:...

    Django实现并发处理的例子

    在IT行业中,Web开发框架Django是Python编程语言的一个强大工具,它被广泛用于构建高效、安全和可扩展的Web应用程序。在这个例子中,我们关注的是如何在Django项目中处理并发,特别是在Linux环境下,这涉及到多线程...

Global site tag (gtag.js) - Google Analytics