Django3教程Django是一个开放源代码的Web应用框架,由Python写成。
Django是一个可以使Web开发工作愉快并且高效的Web开发框架。使用Django,使你能够以最小的代价构建和维护高质量的Web应用。
从好的方面来看,Web开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。通过减少重复的代码,Django使你能够专注于Web应用上有趣的关键性的东西。为了达到这个目标,Django提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。同时,Django尝试留下一些方法,来让你根据需要在framework之外来开发。
本教程的目的是将你培养成Django专家。主要侧重于两方面:第一,我们深度解释Django到底做了哪些工作以及如何用她构建Web应用;第二,我们将会在适当的地方讨论更高级的概念,并解释如何在自己的项目中高效的使用这些工具。通过阅读此书,你将学会快速开发功能强大网站的技巧,并且你的代码将会十分清晰,易于维护。本书的代码清晰,易维护,通过学习,可以快速开发功能强大的网站。
喜欢一个学习观点以教促学,一直以来,学习的时候经常会发现,某个方法某个问题自己已经明白了,但是在教给别人的时候确说不清楚,所以慢慢的学会了以教促学这种方法,在教给别人知识的同时也能够提升自己对语言,对框架的理解.
希望达到的目标:
Django是python中目前风靡的WebFramework,那么什么叫做Framework呢,框架能够帮助你把程序的整体架构搭建好,而我们所需要做的工作就是填写逻辑,而框架能够在合适的时候调用你写的逻辑,而不需要我们自己去调用逻辑,让Web开发变的更敏捷.
Django在新一代的Web框架中非常出色,为什么这么说呢?
为回答该问题,让我们考虑一下_不使用_框架设计Python网页应用程序的情形。贯穿整本书,我们多次展示不使用框架实现网站基本功能的方法,让读者认识到框架开发的方便。(不使用框架,更多情况是没有合适的框架可用。最重要的是,理解实现的来龙去脉会使你成为一个优秀的web开发者。)
使用Python开发Web,最简单,原始和直接的办法是使用CGI标准,在1998年这种方式很流行。现在从应用角度解释它是如何工作:首先做一个Python脚本,输出HTML代码,然后保存成.cgi扩展名的文件,通过浏览器访问此文件。就是这样。
如下示例,用PythonCGI脚本显示数据库中最新出版的10本书:不用关心语法细节;仅仅感觉一下基本实现的方法:
像这样的一次性的动态页面,从头写起的方法并非一定不好。其中一点:这些代码简单易懂,就算是一个初起步的开发者都能读明白这16行的Python的代码,而且这些代码从头到尾做了什么都能了解得一清二楚。不需要学习额外的背景知识,没有额外的代码需要去了解。同样,也易于部署这16行代码,只需要将它保存为一个latestbooks.cgi的文件,上传到网络服务器上,通过浏览器访问即可。
尽管实现很简单,还是暴露了一些问题和不便的地方。问你自己这几个问题:
以上正是Web框架致力于解决的问题。Web框架为应用程序提供了一套程序框架,这样你可以专注于编写清晰、易维护的代码,而无需从头做起。简单来说,这就是Django所能做的。
让我们来研究一个简单的例子,通过该实例,你可以分辨出,通过Web框架来实现的功能与之前的方式有何不同。下面就是通过使用Django来完成以上功能的例子:首先,我们分成4个Python的文件,(models.py,views.py,urls.py)和html模板文件(latest_books.html)
{%endfor%}
结合起来,这些部分松散遵循的模式称为模型-视图-控制器(MVC)。简单的说,MVC是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑(控制器)还有用户接口(视图)分开来。我们将在第5章更深入地讨论MVC。
这种设计模式关键的优势在于各种组件都是松散结合的。这样,每个由Django驱动的Web应用都有着明确的目的,并且可独立更改而不影响到其它的部分。比如,开发者更改一个应用程序中的URL而不用影响到这个程序底层的实现。设计师可以改变HTML页面的样式而不用接触Python代码。数据库管理员可以重新命名数据表并且只需更改一个地方,无需从一大堆文件中进行查找和替换。
本书中,每个组件都有它自己的一个章节。比如,第三章涵盖了视图,第四章是模板,而第五章是模型。
在我们讨论代码之前我们需要先了解一下Django的历史。从上面我们注意到:我们将向你展示如何不使用捷径来完成工作,以便能更好的理解捷径的原理同样,理解Django产生的背景,历史有助于理解Django的实现方式。
如果你曾编写过网络应用程序。那么你很有可能熟悉之前我们的CGI例子。
这正是为什么Django建立的原因!
Django是从真实世界的应用中成长起来的,它是由堪萨斯(Kansas)州Lawrence城中的一个网络开发小组编写的。它诞生于2003年秋天,那时LawrenceJournal-World报纸的程序员AdrianHolovaty和SimonWillison开始用Python来编写程序。
2005年的夏天,当这个框架开发完成时,它已经用来制作了很多个WorldOnline的站点。当时WorldOnline小组中的JacobKaplan-Moss决定把这个框架发布为一个开源软件。
从今往后数年,Django是一个有着数以万计的用户和贡献者,在世界广泛传播的完善开源项目。原来的WorldOnline的两个开发者(AdrianandJacob)仍然掌握着Django,但是其发展方向受社区团队的影响更大。
第一,Django最可爱的地方。Django诞生于新闻网站的环境中,因此它提供很多了特性(如第6章会说到的管理后台),非常适合内容类的网站,如Amazon.com,craigslist.org和washingtonpost.com,这些网站提供动态的,数据库驱动的信息。(不要看到这就感到沮丧,尽管Django擅长于动态内容管理系统,但并不表示Django主要的目的就是用来创建动态内容的网站。某些方面特别高效与其他方面不高效是有区别的,Django在其他方面也同样高效。)
按照这种思路,我们推荐的就是按顺序阅读,从基础开始了解Django的独特之处,等全部都阅读完之后,就可以任意顺序阅读。
本书读者需要理解基本的面向过程和面向对象编程:流程控制(if,while和for),数据结构(列表,哈希表/字典),变量,类和对象。
Web开发经验,正如你所想的,也是非常有帮助的,但是对于阅读本书,并不是必须的。通过本书,我们尽量给缺乏经验的开发人员提供在Web开发中最好的实践。
本质上来说,Django只不过是用Python编写的一组类库。用Django开发站点就是使用这些类库编写Python代码。因此,学习Django的关键就是学习如何进行Python编程并理解Django类库的运作方式。
如果你有Python开发经验,在学习过程中应该不会有任何问题。基本上,Django的代码并没有使用一些黑色魔法(例如代码中的花哨技巧,某个实现解释或者理解起来十分困难)。对你来说,学习Django就是学习她的命名规则和API。
此书内容对Django3.0兼容。
学习本教程前你需要了解一些基础的Web知识及Python基础教程。
Django版本与Python环境的对应表:
Django的最大的益处是,有一群乐于助人的人在Django社区上。你可以毫无约束的提各种问题在上面,如:django的安装,app设计,db设计,发布。
最后,本教程希望通过文字和图的结合让读者能够初步理解Django的工作方式。