Flask框架——快速入门

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


Flask 框架学习目录


1. Flask简介

Flask是一个相对于Django而言轻量级的Web框架。和Django大包大揽不同,Flask建立于一系列的开源软件包之上,这其中 最主要的是WSGI应用开发库Werkzeug和模板引擎Jinja

策略 :werkzeug和Jinja这两个库和Flask一样,都是pocoo团队开发的。这 或许体现了pocoo与Django竞争时关于生态的一种策略,这种策略的自然 延伸是Flask框架中没有包含数据库方面的构件,无论ORM还是其他。

关注点 :Flask是一个WSGI应用框架,这意味着我们进行Flask开发时,不需要 关注网络方面的操作,Flask应用的入口是封装过的网络请求包,出口是 网络响应,我们仅需要关注这个阶段内的处理逻辑。

WSGI服务器 :Flask虽然内置了简单的WSGI服务器,但其性能仅仅适用于开发期的调试。 Flask官网推荐了多种WSGI服务器,实现方式从多进程到多线程到协程, 这方面的选择我们在本课程中将不涉及。

REST适应性 :虽然Flask和Django一样,最初的出发点都是服务端的动态网页应用。但 Flask的设计使之也相当适用于面向资源的REST架构,在越来越移动化 并且单页应用越来越重要的WEB开发领域,这是Flask相对于Django相当 大的优势。

2. Hello Flask

编写一个基于Flask的hello world相当容易:

2.1 首先导入 Flask 类
from flask import Flask

Flask类是Flask框架的核心类,它实现了WSGI应用规范。

2.2 创建 Flask 实例
app = Flask(__name__)

Flask构造函数的第一个参数指定一个引入名/import_name。Flask框架 使用这个名字进行静态资源、模板、错误信息的定位。除非你清楚的理解它的 作用,通常情况下,我们总应该使用特殊变量name

Flask实例是可调用的(具有call方法),这个实例可以直接对接 WSGI服务器。

2.3 注册路由
@route('/')
def index():
  return 'Hello, Flask!'

注册路由就是建立URL规则和处理函数之间的关联。Flask框架依赖于路由 完成HTTP请求的分发。

路由中的函数被称为视图函数,其返回值将作为HTTP响应的正文内容。

2.4 对接并启动WSGI服务器

Flask封装了一个简单的开发用WSGI服务器,我们可以通过调用run() 启动服务器运行:

app.run(host = '0.0.0.0', port = 8080)

完整代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from flask import Flask 
app = Flask(__name__)

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

app.run(host = '0.0.0.0', port = '8080')

运行界面如图:


Reference:

flask框架

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask-Security是一个基于 Flask 的安全扩展,可以帮助你快速实现常见的用户认证和授权功能。下面是一个快速入门指南: 1. 安装 Flask-Security 使用 pip 安装 Flask-Security: ``` pip install flask-security ``` 2. 初始化 Flask-Security 在 Flask 应用中初始化 Flask-Security: ```python from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_security import Security, SQLAlchemyUserDatastore app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///myapp.db' app.config['SECRET_KEY'] = 'super-secret' db = SQLAlchemy(app) from myapp.models import User, Role user_datastore = SQLAlchemyUserDatastore(db, User, Role) security = Security(app, user_datastore) ``` 在这个例子中,我们使用 SQLAlchemyUserDatastore 将 Flask-Security 和 SQLAlchemy 集成在一起,同时使用 Security 类来初始化 Flask-Security。 3. 创建用户模型 创建一个 User 模型来存储用户信息: ```python from flask_security import UserMixin, RoleMixin class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) active = db.Column(db.Boolean()) roles = db.relationship('Role', secondary='user_roles', backref=db.backref('users', lazy='dynamic')) class Role(db.Model, RoleMixin): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) ``` 在这里,我们使用 UserMixin 和 RoleMixin 来添加一些常见的用户和角色属性。 4. 创建用户和角色关系模型 创建一个 user_roles 表来存储用户和角色之间的关系: ```python user_roles = db.Table('user_roles', db.Column('user_id', db.Integer(), db.ForeignKey('user.id')), db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))) ``` 5. 配置 Flask-Security 在 Flask 应用中配置 Flask-Security: ```python app.config['SECURITY_PASSWORD_SALT'] = 'super-secret-salt' app.config['SECURITY_REGISTERABLE'] = True app.config['SECURITY_SEND_REGISTER_EMAIL'] = False app.config['SECURITY_USER_IDENTITY_ATTRIBUTES'] = ['email'] ``` 在这个例子中,我们为密码添加了一个盐值,启用了用户注册功能,并且关闭了注册时发送电子邮件的功能。 6. 添加用户认证和授权路由 添加用户认证和授权路由到 Flask 应用中: ```python from flask import render_template, redirect, url_for from flask_security import login_required, current_user @app.route('/') def home(): return render_template('home.html') @app.route('/dashboard') @login_required def dashboard(): return render_template('dashboard.html', user=current_user) ``` 在这里,我们使用 login_required 装饰器来保护 dashboard 路由,只有已登录用户才能访问该路由。 7. 创建模板 创建一个 home.html 模板来显示主页: ```html <h1>Welcome to My App</h1> {% if current_user.is_authenticated() %} <p>Hello {{ current_user.email }}!</p> <p><a href="{{ url_for('security.logout') }}">Logout</a></p> {% else %} <p><a href="{{ url_for('security.login') }}">Login</a></p> {% endif %} ``` 创建一个 dashboard.html 模板来显示仪表盘: ```html <h1>Dashboard</h1> <p>Hello {{ user.email }}!</p> <p><a href="{{ url_for('security.logout') }}">Logout</a></p> ``` 在这里,我们使用 current_user 对象来检查当前用户是否已经登录,并使用 url_for 方法来生成登出链接。 这就是 Flask-Security 的快速入门指南。有了这个基础,你可以探索 Flask-Security 的更多功能,例如密码重置、电子邮件确认、角色管理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值