需求
- 创建app, 并使用配置文件配置mysql
- 创建一个apps目录, 内部创建一个users目录,users目录下创建user蓝图,并注册到app
- 为user蓝图配置路由;原生路由/info 返回info.html; restful api 路由/user/mobile 返回json数据。
- 为app配置跨域(使用flask_cors)
案例代码
- app.py
from flask import Flask
from flask import request, session, current_app, g
from flask_restful import Api, Resource
from flask_sqlalchemy import SQLAlchemy
from apps.users.user_app import user_app
from apps.users import models
from flask_cors import CORS
app = Flask(__name__)
app.config.from_pyfile("settings.py")
db = SQLAlchemy(app)
api = Api(app)
app.register_blueprint(user_app)
if __name__ == "__main__":
print("xxx:", app.url_map)
CORS(app, supports_credentials=True,
origins=["http://localhost:8080",],
methods=["GET", "POST", "PUT", "DELETE", "OPTIONS"],
allow_headers=["x-requested-with", 'content-type', 'authorization', "author"],
expose_headers="*")
app.run(host="localhost", port=5000, debug=True)
- user_app.py
from flask import request, render_template
from flask import Blueprint
from flask import jsonify
user_app = Blueprint("user", __name__,
static_folder="static/users",
template_folder="templates/users")
@user_app.route("/info", methods=["GET", "POST"], endpoint="userInfo")
def userInfo():
if request.method == "GET":
return render_template("users/info.html")
else:
return "没有页面"
from flask_restful import Api, Resource
api = Api(user_app)
class UserResource(Resource):
def get(self):
res = jsonify({
"code": 200,
"msg": "1733532..."
})
return res
api.add_resource(UserResource, "/user/mobile")
- manage.py
from app import app, db
from app import user_app
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command("db", MigrateCommand)
if __name__ == "__main__":
manager.run()
- settings.py
import pymysql
pymysql.install_as_MySQLdb()
SQLALCHEMY_DATABASE_URI = "mysql://lauf:lauf123@localhost:3306/flask_625"
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True
- models.py