一、项目立项,目录结构
1、入口main.py 2、配置文件 3、应用
二、流程
- api/__inin__.py。创建蓝图对象,添加路由
-
# -*- coding: utf-8 -*- from flask import Blueprint from apps.apis.user_api import UserResource from flask_restful import Api User = Blueprint("user", __name__) user = Api(User) user.add_resource(UserResource, "/user/")
- apps/__init__.py create_app 并且注册蓝图
-
# -*- coding: utf-8 -*- from flask import Flask from apps.apis import User from settings import DevelopConfig, TestConfig from flask_sqlalchemy import SQLAlchemy from flask_restful import Api api = Api() db = SQLAlchemy() def create_app(): app = Flask(__name__) app.config.from_object(TestConfig) db.init_app(app=app) api.init_app(app=app) # 注册lantu app.register_blueprint(User) return app
-
main.py
# -*- coding: utf-8 -*-
from flask_script import Manager, Shell, Server
from flask_migrate import Migrate, MigrateCommand
from apps import create_app, db
app = create_app()
# manager = Manager(app)
# migrate = Migrate(app, db)
# def make_shell_context():
# return dict(app, db)
# manager.add_command("shell", Shell(make_context=make_shell_context))
# manager.add_command("db", MigrateCommand)
# manager.add_command("runserver", Server(host="0.0.0.0", port=3000))
if __name__ == '__main__':
app.run(port=3000)
# manager.run()
- settings
-
# -*- coding: utf-8 -*- import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) def get_db_uri(dbinfo): engine = dbinfo.get("ENGINE") or "sqlite" driver = dbinfo.get("DRIVER") or "sqlite" user = dbinfo.get("USER") or "" password = dbinfo.get("PASSWORD") or "" host = dbinfo.get("HOST") or "" port = dbinfo.get("PORT") or "" name = dbinfo.get("NAME") or "" return '{}+{}://{}:{}@{}:{}/{}'.format(engine, driver, user, password, host, port, name) class Config: DEBUG = True SQLALCHEMY_TRACK_MODIFICATIONS = True SQLALCHEMY_ECHO = True SQLALCHEMY_DATABASE_URI = "mysql://%s:%s@%s/%s" % ('root', '520', '172.20.61.141', 'test') SECRET_KEY = "SKJDJSHDFIUSHEFIUSHFIUDSHI" class DevelopConfig(Config): DEBUG = True dbinfo = { "ENGINE": "mysql", "DRIVER": "pymysql", "USER": "root", "PASSWORD": "nice.tv520", "HOST": "172.20.61.141", "PORT": "3306", "NAME": "test", } SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo) class TestConfig(Config): TESTING = True dbinfo = { "ENGINE": "mysql", "DRIVER": "pymysql", "USER": "root", "PASSWORD": "nice.tv520", "HOST": "172.20.61.141", "PORT": "3306", "NAME": "test", } SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo) class StagingConfig(Config): dbinfo = { "ENGINE": "mysql", "DRIVER": "pymysql", "USER": "root", "PASSWORD": "", "HOST": "localhost", "PORT": "3306", "NAME": "flask", } # SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo) class ProductConfig(Config): dbinfo = { "ENGINE": "mysql", "DRIVER": "pymysql", "USER": "root", "PASSWORD": "", "HOST": "localhost", "PORT": "3306", "NAME": "flask", } # SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo) envs = { 'develop': DevelopConfig, 'testing': TestConfig, 'stage': StagingConfig, 'product': ProductConfig, 'default': DevelopConfig, }