《玩转Django2.0》读书笔记-Django建站基础

时间:2022-01-28 23:21:29

                《玩转Django2.0》读书笔记-Django建站基础

                                       作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.网站的定义及组成

  网站(Website)是指在因特网上根据一定规则,使用HTML(标准通用标记语言下的一个应用)等工具制作并用于展示特定内容相关网页的集合。简单地说,网站是一种沟通工具,人们可以通过网站来发布自己想要公开的咨询,或者利用网站来提供相应的网络服务,也可以通过网页浏览器来访问网站,获取自己需要的咨询或者享受网络服务。

  在早期,域名,空间服务器与程序是网站的基本组成部分,随着科技的不断进步,网站的组成也日趋复杂,目前多数网站由域名,空间服务器,DNS域名解析,网站程序和数据库等组成。

  域名(Domain Name)由一串用点分割的字母组成(例如:www.yinzhengjie.org.cn),代表互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位,已经成为互联网的品牌和网上商标保护必备的产品之一。通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易地找到你所在的位置。以百度的域名(www.baidu.com)为例,百度的网址是由最后两部分组成的,标号“baidu”是这个域名的主域名体;前面的“www.”是网络名;最后的标号“com”则是该域名的后缀,代表的是一个国际域名,属于*域名之一。常见的域名后缀有以下几种:

  • “.com”:     商业性的机构培训或公司。
  • “.net”:      从事Internet相关的网络服务的机构或公司。
  • “.org”:    非盈盈利的组织,团体。
  • “.gov”:    *部门。
  • “.cn”:      中国国内域名。
  • “.com.cn”: 中国商业域名。
  • “.net.cn”:   中国从事Internet相关的网络服务的机构或公司。
  • “.org.cn”: 中国非营利的组织,团体。
  • “.gov.cn”:   中国*部门。

  空间服务器主要有虚拟主机,独立的服务器和VPS等。

  虚拟主机是在网络服务器上规划出一定的磁盘空间供用户放置点的应用组件等,提供必要的站点功能,数据存放和传输功能。所谓虚拟机主机,也叫“网站空间”,就是把一台运行在互联网的服务器规划成多个“虚拟”的服务器。每个虚拟主机都具有独立的域名和完整的Internet服务器(支持www,ftp,e-mail等)功能。虚拟主机是网络发展的福音,极大的促进来网络技术的应用和普及。同时虚拟主机的租用服务也成了网络时代新的经济形式,虚拟主机的租用类似于房屋租用。

  独立服务器事是指性能更强大,整体硬件完全独立的服务器,其CPU都在8核心以上。

  VPS即虚拟即专用服务器,是将一个服务器区分成多个虚拟独立专享服务器的技术。每个使用VPS技术的虚拟独立服务器拥有各自独立的公司IP地址,操作系统,硬盘空间,内存空间和CPU资源等,还可以进行安装程序,重启服务器等操作,与一*立服务器完全相同。

  网站程序是建设与修改网站所使用的编程语言,源代码是按照一定格式书写的文字和符号编写的,可以是任何编程语言。常见的网站开发语言有Java,PHP,ASP.NET和Python等。而浏览器就如程序的编译器,它会将源代码翻译成图文内容程序在网页上,这个过程咱们开发人员喜欢叫它渲染。

二.网站的分类

  咨讯门户类网站是以提供信息咨讯为主要目的,是目前普遍的网站形成之一,例如新浪,搜狐和新华网。这类网站虽然覆盖的信息类型多,信息量大和访问群体广,但包含的功能却比较简单,网站基本功能包含检索,论坛,留言和用户中心等。这类网站开发的技术含量主要涉及4个因素:

  • 承载的信息类型。例如是否承载多媒体信息,是否承载结构化信息等。
  • 信息发布的方式和流程。
  • 信息量的数据量。
  • 网站用户管理。

  企业品牌类网站用于展示企业综合实力,体现企业文化和品牌理念。企业品牌网站非常强调创意,对于美工设计要求较高,精美的FLASH动画是常用的表现形式。网站内容组织策划和产品展示体验方面也有较高的要求。网站利用多媒体交互和动态网页技术,针对目标客户进行内容建设,达到品牌营销的传播目的。企业品牌网站可细分为以下三类:

  • 企业形象网站:塑造企业形象,传播企业文化,推荐企业业务,报道企业活动和展示企业实力。
  • 品牌形象网站:当企业拥有众多品牌且不同品牌之间市场定位和营销策略各不相同是,企业可根据不同品牌建立其品牌网站,以针对不同的消费群体。
  • 产品形象网站:针对某一产品的网站,重点在于产品的体验。

  交易类网站以实现交易为目的,以订单为中心。交易的对象可以是企业的消费者。这类网站三项基本内容:商品如何展示,订单如何生成和订单如何执行。因此这类网站一般需要有产品管理,订购管理,订单管理,产品推荐,支付管理,收费管理,送法货管理和会员管理等基本功能。功能复杂一点的可能还需要基本管理系统,VIP管理系统,CRM系统,MIS系统,ERP系统和商品销售分析系统等。交易类网站成功是否的关键在于业务模型的优劣。交易类网站可细分为以下三大类型:

  • B2C(Business To Consumer)网站:商家-消费者,主要是购物网站,用于商家消费和消费者之间的买卖,如传统的百货商店和购物广场等。
  • B2B(Business To Business)网站:商家-商家,主要是商务网站,用于商家之间的买卖,如传统的原材料市场和大型批发市场。
  • C2C(Consumer To Consumer)网站:消费者-消费者,主要以拍卖网站为主,用于个人物品的买卖,如传统的旧货市场,跳骚市场,废品收购站等。

  办公及*机构网站分为企业办公事物类网站和*办公类网站。企业办公事物类网站主要包括办公事物管理系统,人力资源管理系统和办公成本管理系统。*办公类网站是利用*专用网络和内部办公类网络而建立的内部门户信息网,是为了方便办公区域以外的相关部门互通信息,统一数据和共享文件资料而建立的,基本功能有:

  • 提供多数据源接口,实现业务系统的数据整合。
  • 统一的用户管理,提供方便有效的访问权限和管理权限体系。
  • 灵活设立子网站,实现复杂的信息发布管理流程。

  网站面向社会公众,既可以提供办公指南,政策法规和动态信息等,也可提供网上行政业务申报,办理和相关数据查询等。

  互动游戏网站是近年来国内逐渐风靡起来的一种网站。这类网站的投入是根据所承载游戏的复杂程度来定的,其发展趋势是向超巨型方向发展,有的已经形成来独立的网络世界。

  功能性网站是一种新型网站,其中Google和百度是典型代表。这类网站的主要特性是讲一个具有广泛需求的功能扩展开来,开发一套强大的功能体系,将功能的实现推向极致。功能在网页上看似简单,但实际投入成本相当惊人,而且效益也非常巨大。

三.网站运行原理及开发流程

  如果刚接触网站开发,很有必要了解网站的运行原理。在了解网站运行原理之前,首先需要理解网站中一些常用的术语。

  • 客户端:在计算机上运行并链接到互联网的应用程序,简称浏览器,如Chrome,Firefox和IE。用户通过操作客户端实现网站和用户之间的数据交互。
  • 服务器:能链接到互联网而且具有IP地址的计算机,服务器主要接受和处理用的请求信息。当用户在客户端操作网页的时候,实质是向网站发送一个HTTP请求,网站的服务器接受到请求后会执行相应的处理,最后将处理结果返回到客户端并生成相应的网页信息。
  • IP地址:互联网的协议地址,TCP/IP网络设备(计算机,服务器,打印机,路由器等)的数字标识符。互联网上的每一台计算机都有一个IP地址,用于识别和通信。IP地址有4组数字,以小数点分割(例如:219.141.136.10)这个被成为逻辑地址。为了在网络中定位设备,通过TCP/IP协议将逻辑IP地址转换为物理地址(物理地址即计算机李的MAC地址)。
  • 域名:用于标识一个或者多个IP地址。
  • DNS:域名系统,用于跟踪计算机的域名及其所在的互联网上相应的IP地址。
  • ISP:互联网服务提供商。主要工作是在DNS(域名系统)查找当前域名对应的IP地址。
  • TCP/IP:传输控制协议/互联网协议,是广泛使用的通信协议。
  • HTTP:超文本传输协议,是浏览器和服务器通过互联网进行通信的协议。 

  了解网站常用术语后,我们通过一个简单的例子来讲解网站运行的原理。

  • 在浏览器中输入网站地址,如“www.github.com”。
  • 浏览器解析网站地址中包含的信息,如HTTP协议和域名(github.com)。
  • 浏览器与ISP通信,在DNS查找www.github.com所对应的IP地址,然后将IP地址发送到浏览器的DNS服务,最后向“www.github.com”的IP地址放松请求。
  • 浏览器从网站地址中获取IP地址和端口(HTTP默认是80端口,HTTPS默认的端口是443),并打开TCP套接字链接,实现浏览器和Web服务器的链接。
  • 浏览器根据用户操作向服务器发送相应的HTTP请求,如打开“www.github.com”的主页面。
  • 当Web服务器接受请求后,根据请求信息查找该HTML页面。如果页面存在,则Web服务器将处理结果和页面返回到浏览器。如果服务器找不到页面,将发送一个404错误信息,代表找不到相关的页面。

  很多人认为开发网站是一件很困难的事情,其实没有想象中那么困难。只要明白网站的开发流程,就会觉得网站开发是非常简单的。如果没有一个清晰的开发流程知道开发,那么整个开发过程中会觉得难以实行。完整的开发流程如下:

  •   需求分析:当拿到一个项目时,必须进行需求分析,清楚知道网站的类型,具体功能,业务逻辑以及网站的风格,此外还要确定域名,网站空间或者服务器以及网站备案等。
  •   规划静态内容:重新确定需求分析,并根据用户需求规划处网站的内容板块草图。
  •   设计阶段:根据网站草图,由美工制作成效果图。就好比建房子一样,首先画出效果图,然后开始建房子,网站开发也如此。
  •   程序开发阶段:根据草图划分页面结构和设计,前端和后台可以同时进行。前端根据美工效果负责制作静态页面;后台根据页面结构和设计,设计数据库数据结构和开发网站后台。
  •   测试和上线:在本地搭建服务器,测试网站是否存在BUG。若无问题,则可以将打包,使用FTP上传至网站或者服务器。
  •   维护推广:在网站上线后,根据实际情况完善网站的不足之处,定期修复和升级,保障网站运营顺畅,然后对网站进行推广宣传等。

四.走进Django

  Django是一个开放源代码的Web应用框架,由python写成,最初用于管理劳伦斯出版集团期待的一个以新闻内容为主的网站,即CMS(内容管理系统)软件,与2005年7月在BSD许可证下发布,这套框架是以比利时的吉卜赛爵士吉他手Django Reinhardt来命名的。Django采用了MTV的框架模式,即模型(Model),模版(Templete)和视图(Views),三者之间各自负责不同的职责。

  • 模型:数据存取层,处理与数据相关的所有事务,例如如何存取,如何验证有效性,包含哪些行为以及数据之间的关系等。
  • 视图:表现层,处理与表现相关的决定,例如如何在页面或其他类型文档中进行显示。
  • 模版:业务逻辑层,存取模型及调取恰当模版的相关逻辑,模型与模版的桥梁。

  Django的主要目的是简便,快速地开发数据库驱动的网站。它强调代码复用,多个组件可以很方便地开发出自己的工具包。这使得Django具有很强的可扩展性,还强调快速开发和DRY(Do Not Repeat Yourself)原则。Django基于MVC的设计十分优美:

  • 对象关系映射(Object Relational Mapping,ORM):通过定义映射类来构建数据模型,将模型与关系数据链接起来,使用ORM框架内置的数据库接口可实现复杂的数据操作。
  • URL设计:开发者可以设计任意的URL(网站地址),而且还支持使用正则表达式设计。
  • 模版系统:提供可扩展的模板语言,模板之间具有可继承性。
  • 表单处理:可以生成各种表单模型,而且表单具有有效性检验功能。
  • Cache系统:完善的缓存系统,可支持多种缓存方式。
  • 用户管理系统:提供用户认证,权限设置和用户组功能,功能扩展性强。
  • 国际化:内置国际化系统,方便开发出多种语言的网站。
  • admin管理系统:内置admin管理系统,系统扩展性强。

五.Django 2.0的新特性

  2017年12月2日,Django官方发布2.0版本,成为多年来第一次大版本提升。其中主要特定是Django2.0支持python3.4,3.5,3.6,不在支持python2,而Django1.11是支持python2.7的最后版本。此外,新版本还有以下的显著特性:

  •   简化URL路由语法:使得“Django.urls.path()”方法的语法更简单。功能倒入模块由“Django.urls”实现,如“form Django.urls import include,path,re_path”。
  •   admin管理系统:支持主流的移动设备并新增属性“ModelAdmin.autocomplete_fields”和方法“ModelAdmin.get_autocomplete_fields()”。
  •   用户认证:“PBKDF2” 密码哈希默认的迭代次数从3600增加到100000.
  •   Cache(缓存):“cache.set_many”现在返回一个列表,包含了插入失败的键值。
  •   通用视图:“ContextMixin.extra_context”属性允许在“View.as_view()”中添加上下文。
  •   Pagination(分页):增加“Paginator.get_page()”,可以处理各种非法页面参数,防止异常。
  •   Templates(模板):提高“Engine.get_default()”在第三方模块的用途。
  •   Validators(验证器):不允许“CharField”及其子类的表单输入为空。
  •   File Storage(文件存储):“File.open()”可以用于上线文管理器,例如“with file.open() as f”。
  •   链接Mysql不在使用“mysqldb”模块,改用为“mysqlclient”,两者之间并没有太大的使用差异。
  •   Management Commands(管理命令):“inspectdb”将mysql的无符号整数视作“PositiveSmallIntegerField”字段类型。

六.使用Pycharm搭建DJango开发环境

  详情请参考我的笔记:“Pycharm搭建Django开发环境” 。