https://github.com/snjl/python.flask.helloworld.git

flask优点

  • Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均未深入使用过
  • Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库
  • 入门简单,即便没有多少web开发经验,也能很快做出网站
  • 非常适用于小型网站
  • 非常适用于开发web服务的API
  • 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验
  • 各方面性能均等于或优于Django
  • Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库
  • Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一
  • Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django
  • Flask比Django更加Pythonic,与Python的philosophy更加吻合

hello world

使用pycharm生成一个flask项目,项目结构如下:

helloworld
    static
    templates
    helloworld.py

其中helloworld.py代码:

from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

if __name__ == '__main__':
    app.run(debug=True)

使用app.run(debug=True),可以直接在pycharm中跑,而且这样在修改网页模版的时候,刷新网页内容会直接更新。

这个视图函数其实很简单,这是返回了这个 Hello, World! 字符串。在函数定义上面的是两个装饰器,Python 中特别的语法糖。装饰器改变或者增加了被装饰函数的功能。一个装饰器经常会用到的地方是将函数注册为某些事件的回调函数。在这里,@app.route 装饰器创建了以参数给定的 URL 和视图函数的联系。这里有两个装饰器,将 / 和 /index 和 index 函数关联起来了。这意味着,不论 web 浏览器向哪个 URL 发送请求,Flask 将会调用这个函数,然后将返回值作为对浏览器的响应。

运行

> set FLASK_APP=run.py 
> flask run
 * Running on http://127.0.0.1:5000/

函数写成:

from app import app

@app.route('/')
@app.route('/index')
def index():
    return "Hello, World!"

在服务器初始化完成之后,它就在等待来自客户端的链接了。flask run 的输出表示服务器正在运行在 127.0.0.1 这个 IP 地址上,这个总是你本机的地址。这个地址很常用,因此有一个更简单的别名: localhost。服务器会监听特定的端口,在生产环境上的服务器一般会监听 443 端口,或者在不需要加密的时候使用 80 端口,但是这些都需要管理员权限。因为应用在开发环境上运行,Flask 使用了可用的 5000 端口。下面在浏览器中输入下面的 URL:http://localhost:5000/,当然你也可以输入下面这个: http://localhost:5000/index

两个不同的 URL 会返回同样的东西。但是你输入其他 URL 将会发生一个 404 错误,因为只有上面两个 URL 可以被应用识别。