深入学习Python ,用Django做Web后端开发
现在Python的用途愈来愈广,服务器、Web、游戏、爬虫、数据分析 以及人工智能 学习之路还很长

技术之路 不能回头 陷进去  就出不来 就跟恋爱一般,
学习中、项目中 印象笔记、有道云笔记、Onenote都记了好多
有朋友说,记的笔记一直放在那里会发霉、会忘记;
写写博客、偶尔自己看看、记录自己的成长、同时也算一种分享

Python属于 面向对象 解释型 高级动态计算机程序设计语言

了解一门语言 当先了解它的整体架构、基本语法、内置数据结构、内置函数、标准库以及运行模式、编程模式等。

1、Python总体架构

Python的整体架构可以分为主要三个部分:

左边是 Python提供的内置模块 库 及用户自定义模块

右边是Python的运行环境,包括对象/类型系统、内存分配器、运行状态信息

中间是Python的核心 解释器。Python运行时的数据流  词法分析、语法分析、编译、执行

常用标准库


下面是在逛CSDN每天都被灌的鸡汤,总结一下缺养时可以补补:
    
    编程之久除了算法和数据结构,什么也不属于我们。
    编程就是算法和数据结构,算法和数据结构是编程的灵魂。
    编程中最没用的东西是源代码,最有用的东西是算法和数据结构。
    算法和数据结构是程序的第一秘诀,缺之算法和数据结构是编程的最大原因。
    算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。

尽管少写那么多代码,但省下来的时间又在哪里呢?
    代码是程序员的朋友,虽然没有热情,但是非常忠实。
    当你还不能写出自己满意的程序时,你就不要去睡觉。
    有些代码不应该被忘记,也没有源代码不应该被记住。
    对代码不满足,是任何真正有天才的程序员的根本特征。
    有编过程的人的代码,比那些无知的人使用的软件更有价值。
    编程是一种美德,是促使一个人不断向上发展的一种原动力。
    程序员的一生时间90%是用在编程上,而剩余的10%是活在世界上。
    程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。
    调试的错误就是编程给你最好的东西,因为在每个错误上面都标志着前进的一步。
    假如编程易懂得,那么程序员就不会热情地写出注释,也不会有得到编程的快乐。
    代码是最为耐心、最能忍耐和最令人愉快的伙伴,在任何艰难困苦的时刻,它都不会抛弃你

由于Python的简洁 易读 强大 高效  现在Python应用在文件处理、网络编程、数据库编程、游戏、Web开发、数据分析、机器学习等各个领域。

就Web开发而言,为了提高开发效率,应运而生了很多框架,如Django、Flask、Tornado、Web2py等。

框架很多,根据业务需求、选择适合的框架。

1、Django

最早接触Django,在我心中的形象是:Web框架界的变形金刚

Django的MVT架构、自带ORM、强大的Admin后台管理、自带数据库、还自带开发测试用的服务器、不得不说服务周到。

如此大而全,重量级的Django给开发者提供了超高的开发效率。

淌着Python血液

MVT三大轮子 连接浏览器 数据库开跑

一身装备 可变形 可扩展

多领域 跨平台 协调作战

自我测试 自我管理 自我保护

友好 开放 国际化

装备很多:

用户认证 缓存 日志 邮件 组织 分页 消息 序列化 会话 网站地图 静态文件处理 数据验证

Django支持第三方扩展:

比如:富文本编辑器  缓存 全文检索  celery等

Django项目布署 用nginx做静态资源代理、负载均衡 可以提高高并发能力。

一些Web项目开发 无论用户量、服务群体、上来总谈高并发。没用户 天天愁高并发问题 还没解决也许项目已经黄了。

项目有了、业务有了、用户有了、性能优化、高并发顺势解决嘛。

当然一些大型网站,在高性能的要求下,框架的各个部分往往都需要自己定制,这样用Django也就没有太大优势。

2、Falsk

相较于Django ,Falsk属于轻量级Web框架,也称‘microframework’。

Flask一个简单的核心,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。其他功能开发者根据业务需求 与喜好 添加。

如此 Falsk 自由、灵活、可扩展性很强。很适用于开发小型应用、开发大型网站也没有压力,自己设计架构、选择合适第三方扩展,各方面性能完全不输Django。

常用拓展包:wtf、sqlalchemy、login、script、migrate、mail

3、Tornado

传说中实现高并发、高性能的框架。Tornado的全称是Torado Web Server,可用作Web服务器,同时也是一个Python Web的开发框架。

Tornado两大核心模块:

iostream :对非阻塞式的 socket 的简单封装,用来处理 socket 的异步读写

ioloop :核心的 I/O 循环。基于 epoll,可以高效的响应网络事

其作为Web框架的主要模块

web:包含了 Tornado 的大多数重要的功能
escape :XHTML, JSON, URL 的编码/解码方法
template :基于 Python 的 web 模板系统

httpserver : 非阻塞 HTTP server
httpclient : 异步 HTTP client 用来和web 及 httpserver 协同工作
auth :第三方认证的实现
locale:针对本地化和翻译的支持
等等

Tornado 走的少而精的路子,除了Web开发需要的基本模块,剩下的则都需要开发者自己扩展。比如需要ORM支持,那自己来扩展

Python web框架很多,在于精通。选择适合自己的,开始搞起来。

我做项目用的多的还是Django,不自己重复造车轮子嘛。

题外话:

目前有一些公司选择Go语言 做所谓的高性能的开发

Go语言 号称可解决现今多核心处理器这一大挑战。
Go语言 专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

语言皆是工具

框架提高效率的工具

套用CSDN每天的鸡汤:

编程之久除了算法和数据结构,什么也不属于我们。

编程就是算法和数据结构,算法和数据结构是编程的灵魂。
算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。

真的不知道开发者还剩下什么,当机器可以自己优化数据结构与算法,也许我们就真的只剩下灵魂了。

Flask/Tornado/Django的更多相关文章

  1. 详说Flask、Django、Pyramid三大主流 Web 框架

    前言 目前随着 Python 在大数据.云计算.人工智能方面的热度,Python Web 应该也会被更多企业了解使用. Python Web 框架千万种,没必要都去了解和学习,身边总有人说高手都用 F ...

  2. Flask, Tornado, GEvent, 以及它们的结合的性能比较

    Flask, Tornado, GEvent, 以及它们的结合的性能比较 英文: http://blog.wensheng.com/2011/10/performance-of-flask-torna ...

  3. 如何理解Nginx, WSGI, Flask(Django)之间的关系

    如何理解Nginx, WSGI, Flask(Django)之间的关系 值得指出的是,WSGI 是一种协议,需要区分几个相近的名词: uwsgi 同 wsgi 一样也是一种协议,uWSGI服务器正是使 ...

  4. Flask 和 Django 框架的区别

    1)Flask Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过 Flask自由.灵活,可扩展性强,第三方库的选 ...

  5. Flask与Django哪个更好更实用呢?砖家是这么认为的

        这一周我打算做一个 Flask 教程.本文先把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验.希望我可以帮助您选择学习哪个框架,因为学 ...

  6. Flask与Django的比较

    Flask与Django的区别 Flask Flask确实很"轻",不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过 ...

  7. tornado django flask 跨域解决办法(cors)

    XMLHttpRequest cannot load http://www.baidu.com. No 'Access-Control-Allow-Origin' header is present ...

  8. web框架们~Django~Flask~Tornado

    1.web框架本质 2.Django 3.Flask 4.Tornado

  9. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

随机推荐

  1. KnockoutJS-自定义属性绑定

    在knockoutjs中,已有的绑定功能已经十分强大,基本上可以不需要再去考虑扩展了,但是,也有例外的场景,面对这种场景,还是得去完成,knockoutJS提供了自定义绑定来扩展绑定功能. 一.新建绑 ...

  2. How to: Use Both Entity Framework and XPO in a Single Application 如何:在单个应用程序中同时使用实体框架和 XPO

    This topic demonstrates how to create a simple XAF application that uses both the Entity Framework ( ...

  3. vue 无限滚动问题

    如今web开发中,无限加载是必需的一项功能,尤其是在移动端开发中,一个列表往往默认只加载10条,想看更多只能逐渐往下翻页.那么今天就看看如何在Vue-Cli中实现这个功能. 当前找到两个插件 1 el ...

  4. Mac Pro 2017款自带php与用brew重装PHP后的地址

    mac pro 2017款自带PHP与apache位置: [apache]apache配置文件 :/etc/apache2/httpd.confDocumentRoot : /Library/WebS ...

  5. Test111

    这是一个测试 以下是截图 以下是代码标记       @@@code [XmlRpcMethod("blogger.deletePost")] haaa ggg @@# publi ...

  6. python判断字典中key是否存在

    例:#生成一个字典d = {'title':'abc','age':18} if 'title' in d.keys(): print('存在')else: print('不存在') if 'titl ...

  7. postgres centos 创建数据库 创建用户

    一个小的流程关于如何创建数据库和用户,用以加强印象,以及留档备份 一.创建账户 1.登录postgres账户 su postgres 2.进入psql 指令 psql 3.创建用户 create US ...

  8. 【cf960G】G. Bandit Blues(第一类斯特林数)

    传送门 题意: 现在有一个人分别从\(1,n\)两点出发,包中有一个物品价值一开始为\(0\),每遇到一个价值比包中物品高的就交换两个物品. 现在已知这个人从左边出发交换了\(a\)次,从右边出发交换 ...

  9. [译]Vulkan教程(09)窗口表面

    [译]Vulkan教程(09)窗口表面 Since Vulkan is a platform agnostic API, it can not interface directly with the ...

  10. sql server判断表存在

    在创建表.更改表结构.删除表或对表进行什么操作之前,一个比较严谨的做法是先判断该表是否已经存在. 在SQL Server中判断一个表是否存在,有两个方法,下面以diso表为例. 方法1 from sy ...