Flask是一個基於Python開發而且依賴jinja2模板和Werkzeug WSGI服務的一個微型框架,「微」(micro) 並不表示你須要把整個 Web 應用塞進單個 Python 文件,也不意味着 Flask 在功能上有所欠缺。微框架中的「微」意味着 Flask 旨在保持核心簡單而易於擴展。Flask 不會替你作出太多決策——好比使用何種數據庫。而那些 Flask 所選擇的——好比使用何種模板引擎——則很容易替換。除此以外的一切都由可由你掌握。默認狀況下,Flask 不包含數據庫抽象層、表單驗證,或是其它任何已有多種庫能夠勝任的功能。然而,Flask 支持用擴展來給應用添加這些功能,如同是 Flask 自己實現的同樣。衆多的擴展提供了數據庫集成、表單驗證、上傳處理、各類各樣的開放認證技術等功能。Flask 也許是「微小」的,但它已準備好在需求繁雜的生產環境中投入使用。html
from flask import Flask from flask_script import Manager app = Flask(__name__) manage = Manager(app) @app.route('/') def hello_world(): return 'Hello World!' if __name__ == '__main__': manage .run()
將sqlalchemy 的engine session Base 操做封裝在db 對象,從而使得代碼更加簡潔,是專屬於flask的sqlalchemy,使其能夠像Django的ORM方式同樣操做數據庫。前端
flask-session是flask框架的session組件,因爲原來flask內置session使用簽名cookie保存,該組件則將支持session保存到多個地方,如:mysql
想讓flask相似Django同樣經過命令行的方式 執行遷移,生成表。web
幫咱們直接集成了bootstrap的東西,配置好了之後就能夠直接使用bootstrap上的東西。redis
臨時緩存數據(固然也能夠將數據存儲下來長期緩存),提升客戶端的響應速度,減輕服務端壓力(數據庫壓力) 支持數據過時。sql
幫咱們在頁面上快速查看開發相關配置和後端的sql 路由等等。mongodb
以上的配置:shell
from flask_session import Session from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from flask_bootstrap import Bootstrap from flask_debugtoolbar import DebugToolbarExtension from flask_caching import Cache from myapp.settings import CACHES se = Session() db = SQLAlchemy() bootstrap = Bootstrap() debug = DebugToolbarExtension() # cache = Cache(config = {'CACHE_TYPE':'simple'}) #簡易的緩存 cache = Cache(config = CACHES.get('default')) #緩存到redis,兩種均可以 def init_ext(app): se.init_app(app) migrate = Migrate(app,db) #注意還要傳入db bootstrap.init_app(app) debug.init_app(app) db.init_app(app) cache.init_app(app)
import os from redis import StrictRedis CACHES = { 'default': { 'CACHE_TYPE': 'redis', 'CACHE_REDIS_URL': 'redis://127.0.0.1:6379/6' }, 'debug': { 'CACHE_TYPE': 'redis', 'CACHE_REDIS_URL': 'redis://127.0.0.1:6379/8' } } def get_db_uri(conf): uri = '{backend}+{engine}://{user}:{pwd}@{host}:{port}/{name}'.format( backend=conf.get('backend'), engine=conf.get('engine'), user=conf.get('user'), pwd=conf.get('pwd'), host=conf.get('host'), port=conf.get('port'), name=conf.get('name'), ) return uri class Config: DEBUG = False TEST = False ONLINE = False SECRET_KEY = 'aisofhas' #若是想要使用flask_debugtoolbar ,須要設置 #SECRET_KEY,同時DEBUG = True。 SESSION_TYPE = 'redis' SESSION_KEY_PREFIX = 'myapp:' SQLALCHEMY_TRACK_MODIFICATIONS = False class DebugConfig(Config): DEBUG = True SESSION_REDIS = StrictRedis('127.0.0.1', db=1) DATABASE = { 'backend': 'mysql', 'engine': 'pymysql', 'user': os.environ.get('DB_USER'), 'pwd': os.environ.get('DB_PASSWD'), 'host': '127.0.0.1', 'port': 3306, 'name': 'ex2' } SQLALCHEMY_DATABASE_URI = get_db_uri(DATABASE) class OnlineConfig(Config): ONLINE = True SESSION_REDIS = StrictRedis('127.0.0.1', db=2) DATABASE = { 'backend': 'mysql', 'engine': 'pymysql', 'user': os.environ.get('DB_USER'), 'pwd': os.environ.get('DB_PASSWD'), 'host': '127.0.0.1', 'port': 3306, 'name': 'ex3' } SQLALCHEMY_DATABASE_URI = get_db_uri(DATABASE) conf = { 'debug': DebugConfig, 'online': OnlineConfig, }
注意:若是要使用flask_migrate,manage.py須要填上下面配置。數據庫
from flask_script import Manager from myapp import create_app from flask_migrate import MigrateCommand app = create_app('debug') manage = Manager(app) manage.add_command('db',MigrateCommand) if __name__ == '__main__': manage.run()
from flask import Blueprint, render_template from myapp.ext import * from myapp.models import * blue = Blueprint("wusir",__name__) def init_blue(app): app.register_blueprint(blue) @blue.route('/') @cache.cached(10) def index(): return render_template('index.html')
注意:若是要使用flask_bootstrap,頁面須要先繼承{% extends 'bootstrap/base.html' %},django
{% extends 'bootstrap/base.html' %}
{% block content %}
寫你的頁面內容就能夠了
{% endblock %}