购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Django框架基础

本节首先介绍一下Django框架的基础知识、Django框架的设计原理,以及MVC与MTV这两种模式之间的区别。

1.1.1 Django框架的基础知识

Django(英文发音:`dʒæŋgəʊ)是一个开放源代码的Web应用框架,使用高性能的Python语言编写而成。Django框架的诞生,最初是用来开发和管理Lawrence Publishing Group(劳伦斯出版集团)旗下的新闻网站,它是一款属于CMS(内容管理系统)类的软件,并于2005年7月取得了BSD许可证下的发布权限。然后,经过设计人员的不断努力,Django 1.0版于2008年9月正式发布。

Django框架是一款高水准的、基于Python编程语言驱动的开源模型。Django框架的设计初衷是简便、快速地开发出易于维护的数据库驱动型网站,其所独具的代码复用功能,支持将各种组件以“插件”方式嵌入整个应用框架,从而极大地提高了应用开发的效率。Django框架自身具有很强大的扩展性,在开源社区中存在许多功能强大的第三方插件,设计人员可以非常方便地以“即插即用”的方式将它们应用到自己的项目中。

Django框架主要用于开发数据库驱动型网站,因此具有十分强大的数据库方面的功能。通过使用Python类的继承方式,只需几行代码就可以获取一个完整的、动态的数据库操作接口(Database API)。设计人员还可以通过执行SQL语句实现数据模型与数据库的解耦(即数据模型的设计不需要依赖于特定的数据库),由此通过简单的配置就可以轻松更换数据库。

Django框架自带功能强大的后台功能。设计人员通过在admin.py配置管理文件中写入所需实现功能的代码,就可以轻松地实现只有系统管理员才具有的功能权限,免去了再去设计管理员功能模块的烦琐工作。

Django框架拥有自身所独有的模板系统,该模板系统大大降低了开发者出错的概率。另外,因为模板系统设计简单、容易扩展、代码与样式采取分开设计的方式,所以代码查找起来更清晰、修改起来也更容易。

Django框架的缓存系统采用与memcached、Redis等结合使用的方式,提高了页面的加载速度。

Django框架在urls.py中通过正则表达式来匹配网址,并传递到对应的函数中。设计人员可以根据自己的习惯来自定义网址,具有完全的自主性。

Django框架对于多语言的国际化支持也非常友好。如果打算在网页中显示不同语言(如中文、英文等),设计人员只需要在页面文件的配置中稍微进行修改,就可以实现多种语言的无痕切换。

近年来,得益于Python编程语言地位的不断上升,Django框架的发展势头非常迅猛,版本的更新迭代速度也非常快。由Django官方网站提供的、最新的产品发布路线图(Release-Roadmap),如图1.1所示。

图1.1 Django产品发布路线图

由图1.1可知,目前最新的Django框架版本是5.0.1 LTS,规划在未来两年将更新到6.0 LTS版本。

1.1.2 Django框架设计原理

相信大多数的Web开发者对于MVC(Model、View、Controller)设计模式都不陌生,该设计模式已经成为Web框架中一种事实上的标准了,Django框架自然也是一个遵循MVC设计模式的框架。不过从严格意义上讲,Django框架采用了一种更为特殊的MTV设计模式,其中的“M”代表模型(Model),“T”代表模板(Template),“V”代表视图(View)。MTV模式是从MVC模式变化而来的。

那么,MTV模式的具体内容是什么呢?下面,我们将MTV拆分开来逐一进行详细介绍。

· 模型:表示的是数据存取层,处于MTV模式的底层。模型负责处理与数据相关的所有事务,包括如何存取数据、如何验证数据有效性和如何处理数据之间的关系等方面的内容。

· 模板:表示的是表现层,处于MTV模式的顶层。模板负责处理与表现相关的操作,包括如何在页面或者在其他类型文档中进行显示等方面的内容。

· 视图:表示的是业务逻辑层,处于MTV模式的中间层。视图负责存取模型及调取适当模板的相关逻辑等方面的内容,是模型与模板之间进行沟通的桥梁。

此外,MTV模式还需要一个URL分发器,其作用是将URL页面请求分发给不同的视图去处理,然后视图再调用相应的模型和模板。其实,仔细去品味就会发现,这个URL分发器所实现的就是MVC模式下的控制器(Controller)功能。URL分发器的设计机制是使用正则表达式来匹配URL,然后再调用相应的Python函数或方法。

任何一个Web前端设计模式都离不开控制器这个模块,它代表着业务处理的核心部分。我们在MTV模式中看不到控制器的设计,并不是Django框架没有设计该模块,而恰恰是Django将该模块的功能封装在底层了。这样做的好处就是将设计人员从烦琐的控制层逻辑中解脱出来,通过编写更少的代码来实现用户需求,而控制层逻辑交由Django框架底层自动去完成,从而大大地提高了设计人员的开发效率。

关于MTV模式的响应原理,可参考图1.2中的描述。

图1.2 MTV模式的响应原理

模板接收用户输入后交由视图去处理,视图负责连接模型进行数据操作,并将操作结果传递给模板进行展示,以上就是Django框架所设计的MTV模式的基本工作原理。

1.1.3 Django框架工作机制

Django框架采用了MTV设计模式,在工作机制上自然也有些特别之处,其中最显著的地方就是视图部分。在图1.2所示的原理中,MTV模式中的视图是不负责处理用户输入的,这点就是最特殊的地方之一。

Django框架下的视图不负责处理用户输入,仅负责选择要展示的数据并传递到模板上。然后,由模板负责展示数据(展示效果),并最终呈现给终端用户。进一步来讲,就是Django框架将MVC中的视图解构为视图和模板两个部分,分别用于实现“展现数据”和“如何展现”这两部分功能,这样就可以实现将模板根据用户需求来随时更换,而不仅仅限制于内置的模板。

Django框架工作机制的流程如图1.3所示。

图1.3 Django框架工作机制

当启动Django服务器时,在同一目录下会自动加载配置文件(settings.py),该配置文件涵盖了项目所需的全部配置参数。其中,最重要的配置参数就是ROOT_URLCONF,它定义了Django服务器使用哪个Python模块来用作本项目的URLConf(一般默认是urls.py)。

当用户在Web浏览器(Web Browser)中访问URL时,Django服务器会接收到一个HTTP请求,通过服务器端特定的Handler(ModPythonHandler)创建HttpRequest并传递给中间件(Request Midware)进行处理,这些中间件起着功能增强的作用。

Django服务器会根据ROOT_URLCONF配置的参数来加载URLConf,然后按顺序逐个匹配URLConf中的URLpatterns,如果匹配成功,则会调用相关联的视图中间件函数,并把HttpRequest对象作为第一个参数向下传递。最后,通过视图返回一个HttpResponse对象(通常是Response)。

另外,Django框架还实现了完整的异常处理机制,主要是通过异常处理中间件(Exception Midware)来实现的。当系统出现异常时,异常处理中间件(Exception Midware)会截获并判断异常类型,并返回异常错误(404或500等)信息。

1.1.4 Django框架用户操作流程

Django框架设计的MTV模式是基于传统的MVC模式的,本质上也是为了让各组件之间保持松耦合关系,只是定义上有些许不同。MVC模式之所以能够成为Web框架最流行的设计标准,正是因为它比较完美地契合了用户的操作流程。

MVC模式是软件工程中的一种通用的软件架构模式,同样也适用于Web应用程序。MVC将Web框架分为3个基本部分:模型、视图和控制器,并以一种插件式的、松耦合的方式将它们连接在一起。

在MVC模式中,模型负责编写具体的程序功能,建立业务对象与数据库的映射(ORM);视图为图形界面,负责与用户的交互(HTML页面);控制器负责转发请求,并对请求进行处理。

MVC模式的用户操作流程如图1.4所示。

图1.4 MVC模式用户操作流程

正如前文中介绍的,Django框架的MTV模式指的是模型、模板和视图。最重要的是,MTV模式另外实现了一个URL分发器模块,其作用是将每一个URL页面请求分发给相应的视图进行处理,再由视图去调用相应的模型和模板。

Django框架的用户操作的流程图如图1.5所示。

如图1.5中的描述,用户通过浏览器向服务器端的URL分发器模块发起一个URL请求,这个URL请求会去访问视图函数(View.py)进行匹配,再进一步通过数据模型(Models)访问数据库进行数据操作,然后将操作结果逐级返回到模板,并最终返回网页给用户。

图1.5 Django框架用户操作流程制

1.1.5 Django框架特点

Django框架是基于Python语言及MVC模式设计的优秀Web框架,具有开发快捷、低耦合、部署方便、可重用性高和维护成本低等显著特点。

Django框架通过一个URL分发器模块进行URL分派,该URL分发器模块使用正则表达式来匹配URL,支持设计人员采用自定义URL方式,并且没有框架的特定限定,使用起来非常灵活。

Django框架可以很方便地生成各种表单模型,实现表单的有效性检验,并且支持从自定义的模型实例生成相应的表单。

Django框架具有强大且可扩展的模板语言,支持分隔设计内容和Python代码,并且具有可继承性。

Django框架以Python类的形式定义数据模型,通过ORM(对象关系映射)将模型与关系数据库进行连接,从而让设计人员能够得到一个非常容易使用的数据库API。同时,Django框架也支持直接使用原始SQL语句。

Django框架内置了国际化系统,支持开发多种语言的Web网站。

Django框架内置了一个可视化的自动化管理员界面(Admin Site),其类似于一个CMS系统,设计人员可以方便快捷地通过该界面进行人员管理和更新内容等操作。 KvV07QpCU7k0CO6G3F8oaIdoBi8fI+ycDoMKUw/IBHR7Y+GI3DdkCvkHcvSfkvtz

点击中间区域
呼出菜单
上一章
目录
下一章
×