Python网站开发之版本选择与框架选择

Stella981
• 阅读 610

简单说明:

1. 由于Python具有快速开发,多人协作,库丰富,社区成熟等优点,国内豆瓣/知乎/搜狐/果壳/饿了吗,国外YouTube/Reddit/Instagram/Pinterest/Bitbucket/Disqus/Dropbox等都相继将其作为主力开发语言,所以完全不用担心它的可靠性与性能问题,因为它已受了时间和大规模用户并发访问的考验

2. 很多人以为只要学会某个Web框架,能写代码查查数据库,能写模版渲染出HTML,最多再学习一下配个WebServer把服务跑起来就完事儿,然而并不是,要完成生产可用,能够应付一定规模访问量的Web系统,需要学会的远远不止这些,可能包括环境搭建,API设计,网站架构,系统管理,持续集成,服务化,数据处理,并发处理等等

版本选择:

说明: 编程重在编程思想和经验积累,2.x/3.x思想互通,所以无伤大雅,Arch Linux,Ubuntu 16.04 LTS,Fedora默认自带3.x版Python,官方已宣布2.x版将只会支持到2020年,但未来相当长时间,2.x依然存在

框架选择:

1. 选择更主流的框架,因为文档更全,技术积累更多,社区更繁荣,能得到更好的支持

2. 关注框架活跃情况,关注项目更新频率,如果很长时间没更新或一堆问题没解决则不该放于生产环境

3. 确认选择的框架能否满足需求,没有最好只有最合适,而且要为长远打算,避免推倒重来

4. 注意媒体时效性,可以参考网上建议但要注意发表时间,新的东西的产生必然有其产生的道理

Django:

优点: 其具有非常完备的官方文档,\提供一站式解决方案,包括缓存,ORM,管理后台,验证,表单处理等,使得开发复杂的数据库驱动的网站变得很简单

缺点: 一站式解决方案导致系统耦合性太高,替换内置功能往往需要花费一些功夫,学习曲线相对陡峭

Flask:

优点: 基于WerkZeug的WSGI+Jinja2实现的轻量级Web框架,Web应用的每个环节都有对应的扩展选择,可灵活选择或自定义,

缺点: 虽然可灵活选择或自定义,但缺少一站式解决方案的选择,其实已经有团队推出一站式解决方案ChiKi

说明: Flask的依赖都由Pocoo团队开发,团队其它知名项目还有Pygments,Sphinx,Lodgeit等

Pyramid:

优点: 性能比Flask高,,默认使用Chameleon和Mako模版,很容易切换到Jinja2甚至共存,通过文件后缀名来识别,豆瓣赞赏和豆瓣钱包就是基于此框架实现

缺点: 国内中文文档匮乏,其高级用户需要通过阅读源代码获取灵感

Bottle:

特色: 单文件,截至目前代码只有4100多行,而且所有代码只使用了标准库,而不需要依赖额外的第三方库,更符合微框架定义

Tornado:

特色: 由于其非阻塞及epll运用,速度相当快,每秒可处理数以千计的连接,适用于长轮询,WebSocket等实时的Web服务

Web.py:

特色: 使用基于类的视图,简单易学却功能强大

Klein:

特色: Django/Flask/Pyramid都是基于同步阻塞的WSGI接口,而它基于Werkzeug和Twisted.web实现的异步框架,而且语法和Flask非常相似

登录乐搏学院官网http://www.learnbo.com/

或关注我们的官方微博微信,还有更多惊喜哦~

Python网站开发之版本选择与框架选择

本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处http://xmdevops.blog.51cto.com/11144840/1860384

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这