在Python的Web框架中,Django是比较成功的。
它是一个高级Python web framework,鼓励快速开发和干净的、MVC设计。
包括一个模板系统,对象相关的映射和用于动态创建管理界面的框架。支持ORM、Cache、 i18n、Admin等众多特性,是为了满足“Deadlines”项目而开发的。
先介绍一下目录结构:
conf: 主要有两个作用:1) 处理全局配置, 比如数据库、加载的应用、MiddleWare等 2) 处理urls配置, 就是url与view的映射关系。
contrib:由Django的开发者贡献的功能模块,不过既然都已经随版本发布,就表示是官方的。
core: Django的核心处理库,包括url分析、处理请求、缓存等,其中处理请求是核心了,比如处理fastcgi就是由wsgi.py处理。
db: 顾名思义,处理与数据库相关的,就是ORM。
dispatch: 其实这不是Django原创,是pydispatch库,主要处理消费者-工作者模式。
forms newforms oldforms: 处理html的表单,不用多介绍。
middleware: 中间件,就是处理HTTP的request和response的,类似插件。比如默认的common中间件的一个功能:当一个页面没有找对对应的pattern时,会自定加上‘/’重新处理。比如访问/blog时,而定义的pattern是‘^blog/$’,所以找不到对应的pattern,会自动再用/blog/查找,当然前提是APPEND_SLASH=True。
template: Django的模板,我个人认为这块是非常有创意的。
templatetags: 处理Application的tag的wrapper,就是将INSTALLED_APPS中所有的templatetags目录添加到 django.templatetags目录中,则当使用 {{load blog}}记载tag时,就可以使用 import django.templatetags.blog 方式加载了。不过这有一个问题,如果其他Application目录中也有blog.py,这会加载第一个出现blog.py的tag。其实在 Django中,有许多需要处理重名的地方,比如template,需要格外小心,这个后续在介绍。
utils: 公共库,很多公用的类都在放在这里。
views: 最基本的view方法。
Django几个重要的概念:
Project: 指一个完整的Web服务,一般由多个模块组成。
Application: 可以理解为模块,比如用户管理、博客管理等,包含了数据的组成和数据的显示,Applicaiton都需要在project/settings.py中INSTALLED_APPS的定义。
Middleware: 就是处理request和response的插件, Middleware都需要在project/settings.py中MIDDLEWARE_CLASSES的定义。
Loader: 模板加载器, 其实就是为了读取Template文件的类,默认的有通过文件系统加载和在Application/template目录中加载,Loader都需要在project/settings.py中TEMPLATE_LOADERS的定义。
下面以fastcgi方式为例,Django的版本是“0.97-pre-SVN-7053″。
其实和其他Web框架一样,HTTP处理的流程大致相同(但和Tomcat等Java容器不相同),
比如request->response.
0) 加载配置
Django的配置都在Project/settings.py中定义,可以是Django的配置,也可以是自定义的配置,并且都通过django.conf.settings访问,非常方便。
1) 启动
最核心动作的是通过django.core.management.commands.runfcgi的Command来启动,它运行django.core.servers.fastcgi中的runfastcgi,runfastcgi使用了flup的WSGIServer来启动fastcgi。而WSGIServer中携带了django.core.handlers.wsgi的WSGIHandler类的一个实例,通过WSGIHandler来处理由Web服务器(比如Apache,Lighttpd等)传过来的请求,此时才是真正进入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返回Response给flup,flup就取出Response的内容返回给Web服务器,由后者返回给浏览器。
总之,Django在fastcgi中主要做了两件事:处理Request和创建Response,而它们对应的核心就是“urls分析”、“模板技术”和“ORM技术”,这些留在以后分析。附图
分享到:
相关推荐
Django 框架处理流程和结构分析 Django 是一个高级 Python Web 框架,鼓励快速开发和干净的、MVC 设计。它包括一个模板系统、对象相关的映射和用于动态创建管理界面的框架。支持 ORM、Cache、i18n、Admin 等众多...
这是一个基于Django的流程引擎设计,使用Python、HTML、CSS和JavaScript语言开发,包含136个文件。主要文件类型包括68个Python源文件、...该项目是一个基于Django的流程引擎,适合用于个人学习和实践Django的开发技术。
项目概述:django-lb-workflow 是一个基于Python的高效易用Django...综合来看,django-lb-workflow是一个功能全面、易于集成的Django流程引擎,非常适合需要在现有系统中快速引入流程管理功能的开发者和项目团队使用。
Django提供了一整套功能,包括数据库管理、用户认证、表单处理和URL路由,使得开发者可以快速构建功能丰富的网站应用程序。 【工作流引擎】 工作流引擎是工单系统的核心组件,它负责定义、执行和管理工作流实例。在...
python实现基于Django+vue的基金分析可视化系统源码(95分以上期末大作业).zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行! python实现基于Django+vue的基金分析可视化系统...
Django是Python编程语言中的一款强大且流行的Web框架,它以“快速开发”和“约定优于配置”的理念为核心,让开发者能够高效地构建高质量的Web应用程序。本笔记将深入探讨Django的基础概念、核心功能以及实际应用。 ...
掌握Django项目的结构布局对于高效开发和维护Web应用程序至关重要。理解这些组件以及它们如何相互协作,将使你能够更好地组织和管理你的Django项目。在实际开发过程中,根据项目需求,你可能会对默认的结构进行适当...
在内网环境中利用 Django 和 Pyecharts 进行数据分析展示是一项常见的需求,特别是在企业内部,数据的安全性尤为重要。Django 是一个强大的 Python Web 框架,而 Pyecharts 是一个用于生成 ECharts 图表的 Python 库...
django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django电子商务网站源码 django...
在Django中,Model负责数据模型,Template处理视图呈现,View则负责业务逻辑和数据处理。 2. MySQL数据库集成: Django支持多种数据库,包括MySQL。通过配置settings.py文件中的DATABASES设置,我们可以将Django...
7. **中间件(Middleware)**:中间件是Django框架中的一个特殊组件,它可以全局地影响请求和响应流程。开发者可以利用中间件实现日志记录、权限控制、会话管理等多种功能。 8. **国际化和本地化(i18n & l10n)**...
Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django实现商城网站源码 Django...
Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统源码 Django客户管理系统...
通过以上步骤,我们可以构建出一个基于Django的爬虫管理平台,用户可以直接在Web界面中启动和监控Scrapy爬虫,同时爬取的数据会被自动存入Django的数据库,便于进一步分析和展示。这种结合充分利用了两个框架的优势...
在这个项目中,开发者可能利用了公开的PM2.5数据,通过Django的后端处理和数据分析能力,结合前端的图表展示,帮助用户理解和分析不同城市的空气质量状况。 首先,Django是Python的一个高级Web框架,它提供了完整的...
**Django框架详解** Django,一个由Python语言编写的高级Web开发框架,以其“快速、优雅、可扩展”的特点深受开发者喜爱。...在实际学习过程中,结合课件的理论讲解和源码分析,相信能让你在Django的道路上更进一步。
在Django中,Model用于处理数据模型,View负责业务逻辑和视图呈现,Template则是用于展示数据的模板系统。Django提供了一系列内置功能,如ORM(对象关系映射)、表单处理、认证与授权、URL路由、中间件等,极大地...
9. 测试Django应用程序:讲解了如何编写和运行Django的自动化测试,确保代码质量和维护方便。 10. 部署Django应用程序:教程最后指导了如何将Django应用部署到生产环境,包括关键设置、性能调优和生产环境的设置。 ...
Django的表单模块为创建和处理HTML表单提供了简便的方法: - 表单类的定义。 - 表单的验证机制。 - 表单在视图和模板中的处理。 8. Django的静态文件和媒体文件: Django提供了管理静态文件和媒体文件的机制:...