from flask import Flask app = Flask(name) @app.route('/hi') @app.route('/') def hello_world(): return
Flask框架简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架。 来源-百度百科 MVC框架对比 框架 概述 Flask 全能框架、学习成本较大 Django 微框架、易学习、Jinja2模板、内置服务器、扩展丰富、易扩展 Tornado 高性能、异步处理、扩展不多 Bottle 小巧 ---- Flask为什么可以独立运行 Werkzeug是一个WSGI工具包,也可以作为一个Web框架的底层库。 plain')}) # return [b"hello world"] request = Request(environ) text = "hello flask ,%s"%(request.args.get('a','flask')) response = Response(text,mimetype="text/plain")
为什么学习Flask Flask的灵活度非常之高,他不会帮你做太多的决策,即使做已经帮你做出选择,你也能非常容易的更换成你需要的,比如: 使用Flask开发数据库的时候,具体是使用SQLAlchemy还是 新建Flask项目 我们使用Pycharm专业版,新建第一个Flask项目: 默认生成代码解析 # 从flask框架中导入Flask类 from flask import Flask # 传入__name __初始化一个Flask实例 app = Flask(__name__) # app.route装饰器映射URL和执行的函数。 Flask项目配置 设置为DEBUG模式 默认情况下flask不会开启DEBUG模式,开启DEBUG模式后,flask会在每次保存代码的时候自动的重新载入代码,并且如果代码有错误,会在终端进行提示。 在Flask项目中,有四种方式进行项目的配置: 直接硬编码: app = Flask(__name__) app.config['DEBUG'] = True 因为app.config是flask.config.Config
image Flask-Login在登录过程中主要负责: 将用户对象存入request context中 将用户ID,Session ID等信息存入Session中 在<<使用Flask实现用户登陆认证的详细过程 注意:Flask的session是以cookie为基础,但是是在Server端使用secret key并使用AES之类的对称加密算法进行加密的,然后将加密后的cookie发送给客户端。 关于signal的详细解释请参考拙作<<Flask Signals详解>> 非首次登陆 非首次登陆流程图如下: ? 失败则进入鉴权失败处理流程,如果成功,则允许正常处理请求 那么Flask-Login究竟是如何保护路由的呢? remember cookie是指,当用户勾选'remember me'复选框时,Flask-Login会将用户信息放入到指定的cookie当中,同样也是加密的。
app.py from flask import Flask from flask_bootstrap import Bootstrap from flask_moment import Moment from flask_sqlalchemy import SQLAlchemy from flask_script import Manager app = Flask('sayhello')
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>{{ user.username }}'s Watchlist</title> </head> <body> ← Return
from flask import Flask,request app = Flask(name) 第一个请求时执行 @app.before_first_request def do(): print
@app.route('/') @login_required def index(): page=request.args.get('page',1,type=int) pagination=User.query.order_by(User.createTime.desc()).paginate(page,per_page=12,error_out=False) users=pagination.items return render_template('index.html', name=current_user.username,users=users,pagination=pagination)
urlparse import urlparse, urljoin except ImportError: from urllib.parse import urlparse, urljoin from flask
在全局添加猴子 这能修改 python 默认的 IO 行为,让标准库变成 协作式(cooperative)的 API。注意引入 gevent 后,不能再用原来的方式启动我们的 web 应用了
review和维护了 如果多个人同时开发admin,同时写代码提交,版本控制就会城灾难 如果我们要弃用admin功能块,那我们要删除多少行 2、使用蓝图使之pythonic admin.py from flask def add(): return 'admin_add' @admin.route('/show') def show(): return 'admin_show' user.py from flask app.register_blueprint(admin,url_prefix='/admin') app.register_blueprint(user, url_prefix='/user') ---- from flask
//不要和bootstrap同时使用,会冲突 from flask import Flask from flask import render_template from flask_moment import Moment from datetime import datetime app = Flask(name) moment = Moment(app) @app.route('/moment
from flask import Flask from flask_debugtoolbar import DebugToolBarExtention app=Flask(name) toolbar
app.py from flask_bootstrap import Bootstrap app = Flask('sayhello') bootstrap = Bootstrap(app) index.html
important;">pip install flask_login 2,在flask项目中配置flask_login <pre style="margin: 0px; padding: if not is_safe_url(next): return <em>flask</em>.abort(400) return <em>flask</em>.redirect(next or <em>flask</em>.url_for('index' 这个回调应该和你的user_loader回调一样,只是它接受<em>Flask</em>请求而不是user_id。 但是,<em>Flask</em>-Login使它几乎是透明的 - 只需将remember = True传递给login_user调用即可。 Cookie将被保存在用户的计算机上,然后如果不在会话中,<em>Flask</em>-Login将自动从该Cookie恢复用户ID。
def rename_image(old_filename): ext = os.path.splitext(old_filename)[1] new_filename = uuid.uuid4().hex + ext return new_filename
flask_caching插件就是提供这种功能的神器。 flask_caching 安装 pip install Flask-Caching 初始化配置 init.py from flask import Flask from extensions import cache from setting import Config app = Flask(name) app.config.from_object(Config) 可以使用config 框架的BaseCache,它定义了一个使用缓存的标准接口,通过继承BaseCache实现这些接口就可以在flask中方便的集成各种缓存;而flask_caching插件为我们对redis、memcached import Flask, current_app, make_response, request from exsentions import cache app = Flask(name) app.config
from flask import Flask from flask import render_template from flask_bootstrap import Bootstrap from flask_wtf import Form from wtforms import StringField,SubmitField from wtforms.validators import Required ,validators=[Required()]) submit=SubmitField("Submit") app = Flask(name) bootstrap=Bootstrap(app) name.html {% extends "bootstrap/base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block title %}flask-wtf
from threading import Thread from flask import url_for,current_app from flask_mail import Message
Flask路由与请求对象 什么是路由? 在web开发中,“route”是指根据url分配到对应的处理程序。 ——来源知乎-贺师俊 路由注册 from flask import Flask #从flask包中引入Flask类 app = Flask(__name__) @app.route("/") def 对象注册,将蓝图注册到flask对象中,url_prefix参数可以理解为注册根目录,另一个文件中通过route装饰器来创建子目录响应。 from flask import Flask,Blueprint app = Flask(__name__) index_page = Blueprint("index_page",__name__ import Flask from page1 import index_page app = Flask( __name__ ) app.register_blueprint( index_page