wu | eb6e6ca | 2025-06-15 10:35:32 +0800 | [diff] [blame] | 1 | # app.py |
wu | a80b90d | 2025-06-15 10:36:02 +0800 | [diff] [blame] | 2 | |
wu | eb6e6ca | 2025-06-15 10:35:32 +0800 | [diff] [blame] | 3 | from flask import Flask |
wu | a80b90d | 2025-06-15 10:36:02 +0800 | [diff] [blame] | 4 | from flask_cors import CORS |
| 5 | from config import Config |
| 6 | from extensions import db, migrate |
wu | eb6e6ca | 2025-06-15 10:35:32 +0800 | [diff] [blame] | 7 | |
| 8 | def create_app(): |
| 9 | app = Flask(__name__) |
| 10 | app.config.from_object(Config) |
| 11 | |
wu | a80b90d | 2025-06-15 10:36:02 +0800 | [diff] [blame] | 12 | # 启用 CORS:允许前端 http://localhost:5173 发起跨域请求 |
| 13 | # 生产环境请根据实际域名调整 origins |
| 14 | CORS(app, resources={ |
| 15 | r"/posts/*": {"origins": "http://localhost:5173"}, |
| 16 | r"/posts": {"origins": "http://localhost:5173"} |
| 17 | }, supports_credentials=True) |
| 18 | |
wu | eb6e6ca | 2025-06-15 10:35:32 +0800 | [diff] [blame] | 19 | db.init_app(app) |
| 20 | migrate.init_app(app, db) |
| 21 | |
wu | a80b90d | 2025-06-15 10:36:02 +0800 | [diff] [blame] | 22 | # 在工厂函数里再导入并注册蓝图 |
wu | eb6e6ca | 2025-06-15 10:35:32 +0800 | [diff] [blame] | 23 | from routes.posts import posts_bp |
| 24 | from routes.comments import comments_bp |
| 25 | |
| 26 | app.register_blueprint(posts_bp, url_prefix='/posts') |
| 27 | app.register_blueprint(comments_bp, url_prefix='/posts/<int:post_id>/comments') |
wu | a80b90d | 2025-06-15 10:36:02 +0800 | [diff] [blame] | 28 | |
wu | eb6e6ca | 2025-06-15 10:35:32 +0800 | [diff] [blame] | 29 | return app |
| 30 | |
wu | a80b90d | 2025-06-15 10:36:02 +0800 | [diff] [blame] | 31 | # 只有直接用 python app.py 时,这段才会执行 |
wu | eb6e6ca | 2025-06-15 10:35:32 +0800 | [diff] [blame] | 32 | if __name__ == '__main__': |
wu | a80b90d | 2025-06-15 10:36:02 +0800 | [diff] [blame] | 33 | app = create_app() |
| 34 | app.run(host='0.0.0.0', port=5000, debug=True) |