Django项目开发——002架构梳理

python三个开发框架: django tornado flask MVC

#开源高级web开发框架,使用python

#快速开发: ORM 构建数据库,方法简洁。

#内置应用:admin,auth,sessions

#安全性高:表单验证,sql注入,跨站点攻击。

#易于扩展:

#需要基础:python,sql,http,html&css,正则表达式。

#开发工具 pycharm ;sublime text; atom


Web开发是Python语言应用领域的重要部分,也是工作岗位最多的领域。如果你对基于Python的Web开发有兴趣,正打算开始学习使用Python做Web开发,或者已经是一个Web开发者有工作需要,要做自动化运维、数据的图形化展示等,那么学习一门基于Python的Web开发框架是必修课。

Python作为当前最火爆最热门,也是最主要的Web开发语言,在其二十多年的历史中出现了数十种Web框架,比如Django、Tornado、Flask、Twisted、Bottle和Web.py等,它们有的历史悠久,有的发展迅速,还有的已经停止维护。

Django:发布于2003年,是当前Python世界里最负盛名且最成熟的Web框架,最初被用来制作在线新闻的Web站点。Django的各模块之间结合得比较紧密,所以在功能强大的同时又是一个相对封闭的系统(依然是可以自定义的),但是其健全的在线文档及开发社区,使开发者在遇到问题时能找到解决办法。

Tornado:一个强大的、支持协程、高效并发且可扩展的Web服务器,发布于2009年9月,应用于FriendFeed、Facebook等社交网站。它的强项在于可以利用异步协程机制实现高并发的服务。

Flask:Python Web框架家族里比较年轻的一个,发布于2010年,它吸收了其他框架的优点并且把自己的主要领域定义在了微小项目上,以短小精干,简洁明了著称。

Twisted:一个有着十多年历史的开源事件驱动框架。它不像前三种着眼于Web应用开发,而是适用从传输层到自定义应用协议的所有类型的网络程序的开发,并能在不同的操作系统上提供很高的运行效率。但是,目前对Python3的支持有限,建议使用Python2.7。


有这么多的Web框架,我们没有那么多的精力全都学一遍,也不可能全部精通,必然要有所取舍,那么该如何选择呢?有哪些可以参考的原则呢?

  • 选择更主流的框架。因为它们的文档更齐全,技术积累更多,社区更繁盛,能得到更好的帮助和支持。
  • 选择更活跃的框架。关注项目在GitHub等环境中的更新频率、Issue和Pull Request的响应情况。如果一个项目长期没有更新,或者有一堆的问题需要解决但是没有得到响应,就不应该是你学习的对象。
  • 选择能够满足需求的框架。没有最好的框架,只有更合适的框架。你所选择的Web框架不仅需要满足当前的需求,还要充分考虑项目发展一段时间后的情况,即前瞻性,避免盲目选择而导致将来推倒重来的情况。
  • 选择时效性好的框架。在学习和使用框架的时候经常需要查阅和参考各种网络上的文章、博客和教程,但是需要注意他们的发表时间。有些框架的相关文章已经很老了,很久没更新了,应该放弃这种框架;有的框架一直以来都有不断的新文章、新博客出现,就是比较不错的选择。
  • 选择入门友好的框架。这条只对新手适用。详细的框架文档、官方教程对新手来说都是极大的帮助和鼓励。

以上的几条原则不一定正确和完整,但可以作为基本的选择依据,因此推荐大家从Django开始学习!作为最知名、应用最广泛、功能最全面的Django,它能够满足从大型到小型各种应用的需求,在GitHub上非常活跃,版本迭代速度也非常快,包含大量的组件和常用工具,网络上的学习和参考文章非常多,是个非常好的选择。另外,对于新手而言,Django有着完整的工具链,不需要你费脑筋去琢磨用哪个不用哪个,更适合入门。简单的比喻,如果说Flask是“DIY组装台式机”,性能优良,性价比高,自定义灵活,但是你得要知道如何搭配平台,如何组装各部件,如何更换部件等等,那么,Django就是“苹果一体机”,你不用管它内部组件是如何搭配,如何安装的,直接开机使用就好了。


想要熟练地使用Django进行Web开发,设计生产环境可用的,能够应对一定规模访问量的Web应用,开发者要学会的远远不止Django本身。Python基础、环境搭建、前端语言、API设计、网站架构、系统管理、持续集成、服务化、数据处理、并发处理等等,都是相关的知识领域,包括但不限于以下的内容:

  • 熟悉Python语言
  • 对前端的HTML\CSS\Javascript比较熟悉
  • 熟悉数据库、缓存、消息队列等技术的使用场景和使用方法
  • 日常能使用Linux或Mac系统工作(Windows属于标配)
  • 有性能优化经验,能快速定位问题

除此之外,还要对业务有深刻理解,能够写出可维护性足够高的代码。当然,以上都是对经验丰富的开发者而言,对于新手刚入门者,我们朝着这个目标努力学习就好。

下面是基于Python的Web开发技术栈:

Django项目开发——002架构梳理_第1张图片

相关说明

本教程力争在简单轻松入门的基础上,成为一部可以随时查阅的参考文档。本教程尽量使用初学者容易理解的讲述方式,在最短的时间内跨过使用程序设计语言制作网站的门槛,立刻以Django建立自己的特色网站。

1,windows安装django开发环境。

熟悉pycharm

熟悉python

熟悉anaconda2/3 安装库

熟悉Virtual Environment虚拟环境使用

熟悉:bootstrap3/4前端

 bootstrap3和bootstrap4最大的区别就是4用的是flex布局,3用的是float浮动,bootstrap4的栅格类特小(col-),bootstrap3的栅格类特小(col-xs),bootstrap4新增加的栅格特大(col-xl-),bootstrap4用offset来移动,bootstrap3用push和pull向左和向右移动

2,linux搭建django环境

#安装: ipython,pip,django yum install python-pip ipython pip install ipython

3,搭建的django项目移植项目到centos7上

4,windows下深入学习django

创建项目,应用。

链接mysql数据库。

blog开发。(首页,内容页,翻页,上一页,下一页,等)

应用的链接

页面中如何使用过滤器。

form表单提交。

重写admin,增强行admin,过滤器的使用。

5,开发blog

6,熟悉mvc整体架构

7,搭建cmdb。

pycharm批量注释:

代码选中的条件下,同时按住 Ctrl+/,被选中行被注释,再次按下Ctrl+/,注释被取消

- 撤销与反撤销操作:Ctrl + z,Ctrl + Shift + z

pip freeze > ./requirements.txt

安装

pip install -r requirements.txt

Django2.0中使用Celery,解决异步问题

django_celery_beat

https://blog.csdn.net/bbwangj/article/details/89312355

https://www.cnblogs.com/wdliu/p/9530219.html

Celery是一个基于python开发的分布式任务队列,但是Django2的请求处理过程都是同步的无法实现异步任务,若要实现异步任务处理需要通过其他方式(前端的一般解决方案是ajax操作),而后台Celery就是不错的选择。倘若一个用户在执行某些操作需要等待很久才返回,这大大降低了网站的吞吐量。它可以让任务的执行完全脱离主程序,甚至可以被分配到其他主机上运行。我们通常使用它来实现异步任务(async task)和定时任务(crontab)

Django项目开发——002架构梳理_第2张图片

django-xadmin,最后提交3 Apr 2019,比较老了。

Django项目开发——002架构梳理_第3张图片

Django==3.0.5

pip==20.0.2

setuptools==46.1.3 默认安装

PyMySQL==0.9.3 单独安装,链接mysql

pyVmomi==6.7.0 管理vm,单独安装

#pyVmomi is the Python SDK for the VMware vSphere API that #allows you to manage ESX, ESXi, and vCenter

redis

uwsgi==2.0.15

# django相关类,ldap认证用

pytz==2019.3

django-auth-ldap==1.2.13

python-ldap==2.4.40

django-celery #任务队列,消息队列等

# 阿里云相关类

aliyun-python-sdk-core

aliyun-python-sdk-ecs

aliyun-python-sdk-rds

aliyun-python-sdk-domain

# 亚马逊相关类,处理aws和s3

boto3==1.4.7

# for sql链接,内置连接池,Django样式查找表达式,并发安全,Gevent友好,动力驱动

lorm==0.3.17 #好像非必要

# braces,封装view成类

django-braces==1.11.0

# 实现分页

dj_pagination==2.3.0

# form filter,过滤

django-filter==0.11.0

为什么使用python?  

python适合做什么? 

    web网站和各种网络服务

    系统工具和脚本

    做为“胶水”语言把其他语法开发的模块包装起来方便使用

python不适合做什么?

    贴近硬件的代码(首选c)

    移动开发:IOS/Android有个字的开发语言(ObjC,Swift/Java)

    游戏开发:C/C++

    python源码不能加密

python 与其他语言对比:

    c    编译成机器码,运行速度非常快,代码量非常多

    java  编译成字节码,运行速度快,代码量多

    python 解释执行,运行速度慢,代码量少

python实际应用: Youtube ,  豆瓣 ,搜狐闪电邮

最大的:openstack 开源云计算平台  ;google,yahoo,NASA美国航空航天局迅速选定搭建环境,不要在服务器,开发工具,开发语言上再浪费时间!!!!!

为什么使用Django框架?

轻量级的 Flask,全能型的 Django,重型的 Pyramid

案例:学python web开发框架

django(太重) -> web.py(轻量) -> tornado (不简洁)-> bottle(简介) -> flask(更多插件支持),现在团队内部使用的是基于flask的二次开发框架。

最初学django,因为随手搜一下python web开发框架,满屏都是讲django的。后来觉得太重了。

就去看web.py。web.py其实挺不错的,可惜惊闻作者仙逝无人维护,心里一凉。

刚好又听说tornado性能好、像web.py,学学也不坏。其实一直都喜欢这种非阻塞IO的高性能

后来接触到gevent,知道非阻塞IO还有更优雅的实现方式。

而tornado不满足我内心对“简洁”的苛求,于是栽进bottle这个简单到只有一个文件的库中,相见恨晚

后来朋友推荐flask,原因是极像bottle但对大项目组织支持更好,而且插件更多、生态更好。

python模拟Django框架

Day 5 - 编写Web框架

Bottle: Python Web Framework

对初学者来说,循序渐进是最重要的,我推荐学习 Flask(Welcome | Flask (A Python Microframework))

Flask 很轻,花很少的成本就能够开发一个简单的网站。非常适合初学者学习。

Flask 框架学会以后,可以考虑学习插件的使用。例如使用 WTForm + Flask-WTForm 来验证表单数据,用 SQLAlchemy + Flask-SQLAlchemy 来对你的数据库进行控制。

BTW:果壳网基于 Flask 开发的。

另外也简单介绍下其他框架:

1. Django是一个全能型框架。目前 Django 的使用面还是很广的,有学习的价值,但是不建议初学者学习,因为要学习的东西太多了,一下子难以吸收会失去兴趣。当然,Django 的目的是为了让开发者能够 快速 地开发一个网站,它提供了很多模块,其中我最喜欢的就是 admin 模块,http://your.site.com/admin 就进入了网站的后台(内置的哦~)方便地对数据进行操作,等等。。。。因此,如果对 Django 熟悉的话,papapa 一下子就写好一个网站的原型了。

2. Tornado。传说中性能高高的框架。http://www.tornadoweb.cn/  Tornado 是一个很好的框架,支持异步处理的功能,这是它的特点,其他框架不支持。另外一点是,Tornado 的设计似乎更注重 RESTful URL。但 Tornado 提供了网站基本需要使用的模块外,剩下的则需要开发者自己进行扩展(定制模块也需要修改)。例如数据库操作,虽然内置了一个 database 的模块(后来独立出去了,现在叫做 torndb,bdarnell/torndb · GitHub)但是不支持 ORM,快速开发起来还是挺吃力的。如果需要 ORM 支持,还需要自己写一层将 SQLAlchemy 和 Tornado 联系起来,而且这还有一个坑。

BTW:知乎就是基础 Tornado 开发的。Tornado是是facebook开源的,加上自身优秀的代码质量和傲娇的效率表现,目前非常火,诞生了一大批的优秀产品,如你在它上面提出这个问题的 知乎, quora,INK361 ,42区 . 遇见等等。

3. Bottle。Bottle 和 Flask 都属于轻量级的 Web 框架。但是 Bottle 似乎落寞了。我觉得跟他的 API 设计有关系。个人认为 Bottle 使用起来不那么顺手,因此也用得少。这里不做太多介绍。

4. web.py。也是很轻的一个框架,使用不多,作者仙逝无人维护,也不做介绍。

5. web2py。我看楼上都没有对这个框架做介绍。这个框架是 Google 在 web.py 基础上二次开发而来的,兼容 GAE 。性能据说很高,曾经用他来做自己的主页,感觉也还不错。缺点同样是对扩展支持不太好,需要自己进行扩展。

6. Quixote。著名的 豆瓣 就是基于 Quixote 开发的。跟上面几个框架不同,Quixote 的路由会有些特别。另外 Quixote 的性能据说也好。

http://baike.baidu.com/link?url=LBld26v6CDRg8gHp0Y-7D94YD3GwRKbv2KfbClpm_xkFwmCMo4pxzQwJTnrz_gi12LOvBfGqQoctKJWls2VgxK

你可能感兴趣的:(Django)