初识Django

1.引言背景

Django是采用纯Python语言开发的web后端框架。相比flsk要重度得多(内容多、东西全),覆盖了常规web功能的方方面面,因此学习成本比其他框架要大一些。

早期Django面向的应用场景是新闻和内容资讯的网站和应用APP,创始人原先是新闻网站的工作人员,当时想做出一个有体系、有标准的web框架,来解决新闻网站开发成本过高的问题。但是这并不代表Django只能做新闻网站,很多手机游戏也是用Django做后端层面的服务框架的。

        1.1什么叫【重度】?

【重度】意味着Django的web框架可配置的选项、参数覆盖web的方方面面,功能全,组件也多,这就大大提高了项目定制的灵活性,但是在一定程度上相较于【轻度】框架,也增加了初学者的学习成本。因为重度,所以创建Django项目后,需要重点学习:

(1)如何配置settings.py文件

(2)实操、多练Django的常用命令

        1.2什么叫【框架】?

如果把网站比喻成房子,那么建材就是数据,在将这些建材搭建成各种各样形形色色,功能各异的建筑物时,需要遵守和满足土地面积、规划和图纸设计要求、国家标准、行业标准、技术工艺等,这些要素就是房子的框架,既有看得见的结构框架,也有看不见的规范要求的虚拟框架。

web网站也有一系列的协议和技术标准组合,比如HTTP、数据库技术,采用哪种协议,哪种技术,哪些标准,各种协议技术对接方式,都是这个网站的【框架】。因此Django就是负责实现、调度【协议】、【技术】、【标准】的一个【框架】,同时可以适应不同垂直细分领域的需求,对【框架】进行裁剪配置,也就是上面提到的【重度】的内涵。

2.Django介绍

        2.1使用场景

简单一句话,Django就是用来快速搭建web网站的。Django支持分布式路由、中间件、自带的admin管理后台和用户档案管理系统等配置项,这些特性得益于Django的【重度】框架,这样就可以灵活适应各种不同规模网站的需求,让一个业务系统项目可以快速部署落地,知名网站:谷歌、YouTube、豆瓣、知乎等等就是使用Django开发的。

在一些垂直领域,Django可以实现大的、企业级的电商项目,涵盖了用户模块、商品模块、购物车、订单、支付模块等一整套完整的电商体系。

用途一:网站、微信公众号、小程序后端开发。其本质上是实现了http请求响应的服务。因此HTTP请求服务类的后端都可以用Django来实现。网站可以通过浏览器来访问,公众号和小程序通过微信来访问,区别只是HTTP响应的网页显示的载体不同而已。

用途二:人工智能平台融合,其本质上在整个人工智能项目中,承担了http请求和htttp响应的功能,语义处理的核心还是需要人工智能系统模块来完成。

         2.2学习路径

首先需要掌握Python的基本语法。初学者只需要关注如何使用、配置Django即可,按照Django的规则,模仿实操Linux的命令,就可以快速做出一个网站,随着学习的深入,可以查阅Django的源代码和框架体系,感受编程思维。

        2.3配置组件

                2.3.1基本配置文件

从Django官网下载、安装Django以后,就可以创建一个具体的业务系统网站项目,在创建好的项目文件夹中,有一个配置文件【settings.py】里面可以填写大量的配置项目。很多配置项都是Django规定好的,只需要,跟随学习,多多练习实操、记住即可。

                2.3.2路由系统

路由系统是一个web网站的最初的流量入口。网站用户在浏览器中输入网址后,浏览器会转换为HTTP请求发送给服务器,服务器收到请求后,首先就是由Django的路由系统组件决定,如何响应这个请求。所以初学Django的时候,前期在一遍学习配置Django的路由系统的同时,一遍要搞清楚,在整个浏览器和服务器交互过程中的 HTTP的请求和响应的主体是谁?通过什么【头】的【控制字段】实现【什么功能】,搞清楚这些之后,结合Django的各种【重度】配置项,你就可以做到举一反三,按需配置。

                2.3.3模型层(M)、模板层(T)、视图层(V)

Django的web框架是属于MTV框架。所谓分层、分级、分模块等等这些思想的底层逻辑就是将一个复杂事务进行解耦的过程的一种思想框架的体现,以保持在处理复杂事务的过程中,各个模块之间可以更有效率,工作负荷更加均衡,既能接收外部的并发请求又能协调并保持内部模块处理的有序和同步。这种思想框架也不是一蹴而就,而是在不断迭代升级、打破、重构地一系列漫长演变过程后形成的。

模型层(M):这个是负责Django连通数据库的模块。你可以使用Django提供的ORM,轻松访问、操作数据库。你可以像操作一个普通Python的对象一样,用面向对象的思路去操作数据库,可以更加专注于业务逻辑的实现,降低了对SQL语法的记忆依赖。所有这些面向对象的数据操作与SQL语法语句之间的转换,则全部交由Django模型层自动实现。

模板层(T):这个模块是用来编写HTML网页的内容,既然叫【模板】,那么一个网页页面中的应该如何划分内容区域,哪些是模板格式的静态内容,哪些是从【模型层】拿到的数据库的动态实时数据,各种数据、内容如何渲染,什么字体、什么样式等都是【模板层】来实现的功能,最终会渲染(转换为)用户浏览器看见的最终"静态"的html代码,【浏览器】拿到这个html代码后,再转为人们便于阅读和理解地五彩缤纷的页面内容。

视图层(V):当有web请求进来后,Django的路由系统将决定该交给哪个业务模块处理,其中这个业务模块可以理解为属于视图层。因此【视图层】和你网站要实现的业务功能的逻辑是紧密耦合的,什么样的业务逻辑,需要从【模型层M】的数据库中获取什么样的业务数据,以及业务数据如何计算、判断、最终输出哪些数据给【模板层T】显示到页面中。这些业务逻辑功能都要在【视图层V】实现,你可以理解视图层决定了【浏览器】用户最终可以看见什么样的数据内容,这样内容要由你网站的业务流程和需求决定。

                2.3.4Cookies和Session

由于HTTP协议本身不规定【客户端浏览器】和【服务端服务器】之间的交互数据的存储问题,这就会造成这两个节点之间的记忆是单次的、短暂的,只有请求和响应。

因此COOKIES和Session就是为了解决两个主体之间的如何进行数据存储和记忆,确保分步操作流程的顺畅执行的两种储存技术,记住http状态的2套经典的技术,Django也能方便的支持并实现。

                2.3.5分页、发邮件

除了上述web服务的核心功能外,其他的辅助功能,包括内容分页显示、邮件发送等Django也都支持,所以使用Django框架开发,很多功能都可以支持并解决,不再需要额外的开发成本。

所以选择Django框架,不存在web服务能不能实现的问题,而是你会不会要按照Django的规则去配置、使用Django框架,从而实现新功能的落地部署、使用。

                2.3.6Admin管理后台

通常一个web项目网站做好之后有2类登陆入口:

(1)面向外部普通用户

(2)面向内部工作人员(非开发人员)

比如电商网站有库存管理,包括商品名、下架、详情编辑,商品规格编辑等等配置都可以通过Django原生提供的admin管理后台快速实现,当然你也可以自定义开发。

这个admin管理后台,本质上就是【模型层M】的数据库(ORM)管理,只是Django帮你做好了,页面的可视化界面,提供了常见的增删改查操作接口,你只需要配置即可实现。对数据库中的所有数据表的数据进行编辑,而不需要内部工作人员懂数据库技术,是一个完全可视化的编辑界面。

3.安装Django

        3.1Django资料及版本

Django官网:https://www.djangoproject.com/

关于学习资料:重点关注文档Documents,把重点放在实操层面以及Django的使用配置规范方面,官网有很多资料文档和案例介绍得很清楚,初学者不要把重点放在试图去理解Django的开源代码。

关于中文资料,因为Django在Python的web框架的国内热度一直处于前几位,另外一个Flask。所以官网也有一些中文文档,点击language后选择zh-hans就可以查找中文开发使用文档了。

国内Django中文文档参考网站:一译有技术方面的翻译文档,一般会比Django官网的翻译质量要好一些。我在书写这篇文章时,使用的Django是3.2版本。

3.1.1版本号的含义

版本号中前两位版本一般每8个月发布一次,主要是新功能发布,第三位版本一般是修复一些bug或安全问题。

LTS版本:long-term support,代表会长期支持的版本(一般是3年内,提供技术支持,官网承诺的售后服务等),因此站从网站的长期运维的角度上来说选择,当下最新版本对应的LTS版本是一种可行的选择。

我在2021年10月初开始着手编写这份Django文档,当时节点选择的就是3.2LTS版本,此版本Django官方将一直提供技术支持服务到2024年为止。

因此有些公司会在官网发布LTS版本后选择升级到最新版,以便实现一些新功能、新技术;有些公司没有新技术、新功能应用的业务需求,同时老版本一直运行稳定,就不会升级到新的LTS版本。

注意,这里需要强调的一点,最新版不一样就是LTS版本。所以建议你在生产系统中选择LTS版本3.中挑选最新版使用。

3.2Django安装步骤

        3.2.1安装环境

                3.2.1.1下载操作系统

Linux的发行版建议使用Ubentu系统,因为Ubentu原生系统就已经安装了Python环境。Ubentu也有很多衍生版本,其中优麒麟就是Ubentu官方的衍生版本发行版,因此对于中文环境的支持相对友好,原生自带了WPS、搜狗拼音等中文软件,所以推荐使用优麒麟。

下载地址:https://www.ubuntukylin.com/downloads/427-cn.html

iso文件容量较大3.8GB左右,请使用迅雷下载比较快。

                3.2.1.2下载虚拟机

因为优麒麟是Linux系统不能直接跑在windows系统上,所以需要用虚拟机,模拟一台计算机硬件资源的裸机出来,然后把优麒麟的Linux发行版安装到这台虚拟出来的裸机上面。那么用什么虚拟一台与真实硬件一样的裸机呢,就是用虚拟机来模拟出来。

VMware Workstation Player针对非商业用途个人开发学习是免费版本的虚拟机软件。

下载地址:https://www.vmware.com/products/workstation-player.html

下载安装完成虚拟机软件以后,用虚拟机创建一个Linux系统,在创建的时候选择上一步你下载的优麒麟的镜像文件(*.iso),然后根据提示操作完成安装。

如果针对上述安装环境的遇到问题,可以留言咨询,在此不做赘述。

                3.2.1.3安装Django

安装Django3.2,需要Python的对应版本为:3.6、3.7、3.8、3.9,如果你是按照上述步骤下来安装了新版的优麒麟Linux系统的话,原生已经自带了Pyhton3.8

所以接下来你只需要安装Django即可,在Linux系统中安装一个软件与windows不太一样的地方,就是往往通过命令行的形式安装,虽然优麒麟操作系统在外观上已经做的和windows一样的图形界面,可以鼠标双击运行里面的应用程序,但是本质上这些都是Linux内核shell外面套的人机交互接口,你也可以理解为内核外面的皮肤。

在优麒麟Linux系统桌面,右击鼠标,选择【打开终端】

你就会看见黑底白字的【终端】窗口,就像windows自带的【命令提示符】窗口。

确保优麒麟的Linux系统可以上网的前提下,在【终端】中输入以下命令,即可安装Django:国内可以使用命令行中【阿里云】镜像网站安装Django会比较快。初学者不用纠结是否能记住Linux命令,只管模仿,也不用深挖一条命令的所有语法,只要把命令和其作用,记录到自己的云笔记中,以后用到能够搜索查到即可,听话、照做,不要多想,多多实操,在实操的过程中体会、总结、归纳,慢慢就会形成自己的知识体系了。

安装Django方法一:推荐

(1)在【终端】中输入以下命令

pip install -i https://mirrors.aliyun.com/pypi/simple/ django

(2)安装Django完后以后,输入以下命令

pip freeze |grep -i django

确认Django的版本:3.2.7 (以下命令中 -i 代表不区分大小写)

安装Django方法二:不推荐

(1)通过Django官网下载*.gz文件离线安装

(2)然后解压缩,解压命令:tar -xvf Django-xxx.gz  (xxx代表下载的gz文件中对应的版本数字)

(3)进入存放下载Django压缩文件的目录中,使用命令:cd Django解压目录

(4)安装命令:python3 setup.py install

(5)检查安装Django的版本,命令同上:pip freeze |grep -i django

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值