1.初识Flask

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 更加吻合

Flask的安装

pip3 install flask

快速开始

# 引入flask
from flask import Flask

# 实例化flask
app = Flask(__name__)

# 启动应用
app.run()

经过上面的代码便可启动一个flask应用,试试在浏览器地址栏输入http://127.0.0.1:5000,由于没有配置视图页面,因此你看到的404页面,这个时候咱们的应用已经运行起来了。html

路由配置

Flask中是经过装饰器实现路由的。web

from flask import Flask

app = Flask(__name__)

# 配置路由
@app.route("/")

# 定义路由执行的方法
def index():
    return "<h1>Flask</h1>"

app.run()

页面渲染

  • Flask的方法默认不会加载,咱们要手动加载须要的方法
  • Flask提供了render_template方法用来渲染咱们的视图模版页面。
  • Flask默认的模版文件存放位置为templates,咱们先在根目录建立templates文件夹,并在里面建立login.html文件,进行以下编辑。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1>我是登陆页面</h1>
</body>
</html>

下面咱们经过路由来进行这个页面的渲染shell

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
    return "<h1>Flask</h1>"

@app.route("/login")
def login():
    return render_template("login.html")

app.run()

重定向

使用redirect方法实现页面视图的重定向数据库

from flask import Flask, render_template, redirect

app = Flask(__name__)

@app.route("/")
def index():
    return "<h1>Flask</h1>"

@app.route("/login")
def login():
    return render_template("login.html")

# 这里是个重定向
@app.route("/redirect")
def rr():
    return redirect('/login')

app.run()

jsonify

返回一个序列化后的json格式数据,至关于对请求头设置Content-Type: application/jsonjson

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/jsonify")
def jsify():
    return jsonify({"name": "JWB", "age": 23})

app.run()

上面代码运行结果以下:flask

{
  "age": 23, 
  "name": "JWB"
}

send_file

send_file()函数用来,打开并发送文件,能够发送文本、图片、小视频等api

from flask import Flask, send_file

app = Flask(__name__)


@app.route("/")
def index():
    return "<h1>Flask</h1>"

@app.route("/file")
def file():
    return send_file("1.jpg")

app.run()

在浏览器里面访问路由,会直接打开图片文件。浏览器

启动配置

run()函数中添加如下方法,能够对启动项进行配置安全

  • host 主机地址,默认127.0.0.1
  • port 端口,默认 5000
  • debug 是否开启debug,默认false

ps: 开启debug后,Flask服务会在文件修改事后,自动重启babel

# 引入flask
from flask import Flask

# 实例化flask
app = Flask(__name__)

# 启动应用
app.run(host="0.0.0.0", port=9527, debug=True)

Flask 经常使用库列表

flask-script

为Flask提供强大的命令行操做,与Django shell相似。

flask-login

Flask user session管理,提供诸如login_user, logout_user, login_required, current_user等功能,也是其余不少Flask库的基础。

flask-admin

为Flask应用提供操做简单且易于扩展的数据库管理界面,与Django自带的数据库管理app相似。

Flask-WTF

Flask与WTForms的集成,提供强大的Form安全和校验机制,与Django内置的Form功能相似。

flask-principal

Flask强大的权限管理机制,灵活性强,提供了一个权限管理的基础框架,是不少Flask权限相关扩展的基础。

flask-restful

一个强大的Flask RESTful框架,简单好用。

flask-api

至关于Django REST Framework的Flask版,是另外一个强大的Flask RESTful框架。

Flask-Mail

Flask-Mail 为Flask应用添加了SMTP 邮件发送功能

Flask-User

Flask-User集成了用户管理相关功能,并容许对功能作定制性修改,其相关功能包括Register, Confirm email, Login, Change username, Change password, Forgot password等。

Flask-User 基于Flask-SQLAlchemyNoSQL数据库没法使用。

flask-security

Flask-Security让开发者可以很快的为应用添加经常使用的安全机制,其整合了Flask-Login, Flask-Mail, Flask-Principal, Flask-Script等应用。其安全机制包括:

  • Session based authentication
  • Role management
  • Password encryption
  • Basic HTTP authentication
  • Token based authentication
  • Token based account activation (optional)
  • Token based password recovery / resetting (optional)
  • User registration (optional)
  • Login tracking (optional)
  • JSON/Ajax Support

flask-babel

Flask国际化和本地化扩展,基于Babel

flask-locale

为Flask应用添加语言包,与flask-babel相似。

相关文章
相关标签/搜索