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页面,这个时候我们的应用已经运行起来了。

路由配置

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

from flask import Flask

app = Flask(__name__)

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

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

app.run()

页面渲染

  • Flask的方法默认不会加载,我们要手动加载需要的方法
  • Flask提供了render_template方法用来渲染我们的视图模版页面。
  • Flask默认的模版文件名为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>

下面我们通过路由来进行这个页面的渲染

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()

启动配置

run()函数中添加以下方法,可以对启动项进行配置

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

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

# 引入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类似。

猜你喜欢

转载自www.cnblogs.com/yanshanketang/p/10737764.html