Python Web框架简介

我们都知道,在开发工作中,使用现成的框架或者库来做开发的话,可以节省大量的工作,这也是开发人员常说的,不要重复造轮子。在使用Python做Web开发的时候,有哪些web框架可以来帮我们提高效率,加快网站上线呢?我们来看这些常用的Web开发框架。

1. Flask

基于BSD协议开源的Web框架,它是一个轻量级的Web框架,启动非常迅速且简单。它依赖于Werkzeug这个WSGI这个WSGI工具(用于接收路由请求)和Jinja2 模板(用于渲染网页)。它采用了一个简单核心加扩展的架构方式,也就是说,除了核心功能以外,其他的功能都需要你自己来选择对应的库来提供功能。当然,官方为大家提供了一些常用的库。Flask的简单从代码中就能看出来,例如下面的代码中,就是输出Hello, world页面的信息:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

Flask的官网地址是:https://palletsprojects.com/p/flask/,有兴趣的同学可以到官网上研究一下它的官方文档。

2. Django

上面我们说到Flask的哲学是简单,那么Django的哲学应该就是大而全了。Django的内部模块,几乎提供了大部分Web开发所需要的功能,例如用户认证、数据库迁移、会话(Session)和Cookie管理等等。它的模板引擎和Flask一样,都是基于Jinja2,同时,它的对象关系映射(ORM)功能,做的非常简单,直接通过模型来操作数据,开发人员看到的只是Python里的类模型,而底层不管你是使用MySQL也好,还是PostgreSQL、Oracle这样的数据库,都可以直接使用模型来操作,大大降低了和数据库打交道的难度,为开发人员节省了大量时间。它甚至还为你直接提供了一个管理后台,让你可以直接管理对应的数据信息,可以说是一个万能工具箱了,Django也因此被各大网站所采用。

如果你想尝试一下开发Django网站,可以根据下面的代码尝试一下:

# 1. 打开windows命令行窗口或者linux的shell窗口,先安装django模块
pip install django

# 2. 创建一个django项目,会在当前目录下生成一个demo项目文件夹
django-admin startproject demo

# 3. 切换到demo文件夹,里面有1个文件manage.py和demo子目录(配置文件目录)
# cd demo; ls demo
demo manage.py

# 4. 打开demo子目录里的settings.py文件,找到ALLOWED_HOSTS配置,改成下面的值

ALLOWED_HOSTS = [
    '127.0.0.1',
]

# 5. 启动demo项目,命令是:
python manage.py runserver 0.0.0.0:8000

# 6. 打开浏览器,输入地址
http://127.0.0.1:8000

此时你就会看到下面的demo页面:


想尝试的同学,可以到django的官网上去看一下,Django也是为数不多提供中文文档的开发框架,它的官网地址是:http://djangoproject.com

3. Web2py

Web2py框架是一个开源的全栈式框架,可以用于开发快速、可扩展、安全以及可移值的数据库驱动web应用。它的特点是:

  • 自带电池,所有你需要的东西都在官方包里包含;
  • 简单运行,不需要安装和配置,而是全部通过web界面来管理和配置。
  • 支持多种web服务器,可通过WSGI协议和Nginx、Apache等主流浏览器良好配合
  • 支持多种后端数据库,例如SQLite、PostgreSQL、MySQL、MSSQL等等

web2py的官网页面是:www.web2py.com,在官网页面提供了一个在线尝试开发web2py应用的页面,地址是:https://www.pythonanywhere.com/try-web2py/

4. Dash

Dash也是一个开源框架,它主要是用于开发数据分析网页,为数据科学家、数据分析人员开发的一款Web框架。它是构建在Flask,Plotly.js和React.js之上。通过几个简单的模式,Dash抽象出构建基于Web的交互式应用程序所需的所有技术和协议。由于Dash应用程序是在Web浏览器中进行查看,因此Dash本质上是跨平台和移动端的。
Dash的官网页面是:https://plot.ly/dash/

5. bottle

相对于上面的几个框架来说,bottle可以说是一个微型的网页框架,它通过一个简单的资源文件来提供所有的功能,因此这个web框架一般用来设计web api,它的标准库中没有任何依赖项,也就是说,你可以把它和其他框架结合在一起使用。bottle的使用也非常简单,示例代码如下:

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

执行这个代码文件,然后在浏览器中打开地址
http://127.0.0.1:8080/hello/world/
就能看到网页上显示的Hello world字样。bottle的官网是:http://www.bottlepy.org/,感兴趣的同学可以上去看看。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352