gpt4 book ai didi

python - 如何在 Flask 中引用多个模型?

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:59 24 4
gpt4 key购买 nike

如何在 Flask 应用程序中处理和引用多个模型?

为什么我不能拥有多个模型类 .py 文件?除了一个大的 models.py,有没有办法在 flask 中包含以下内容:

示例模型:

students.py
teachers.py
classes.py
schedules.py
...

?

最佳答案

这是一个我想像 Django 一样构造的 flask 应用程序:

/blog_project
config.py
wsgi.py
.gitignore
/blog_app
__init__.py # where factory application resides
/users
/static
/templates
__init__.py
models.py
routes.py
views.py
/posts
/static
/templates
__init__.py
models.py
routes.py
views.py

我试图以类似于 Django 的方式构建我的 Flask 应用程序项目,因为我的应用程序变得太笨重且难以维护。我有一个 Factory Application 函数,它创建 Flask 应用程序对象,该对象在 Flask 中注册 Blueprints .

# users/routes.py

# import
from Flask import Blueprint
from users.views import get_users

# Create Flask Blueprint object
user_pb = Blueprint(
'user_pb',
__name__,
template_folder='templates',
static_folder='strains/static'
)

@user_bp.route('/users', methods=['GET'])
def users():
return get_users()
# posts/routes.py

# import
from Flask import Blueprint
from users.posts import get_posts

# Create Flask Blueprint object
post_pb = Blueprint(
'post_pb',
__name__,
template_folder='templates',
static_folder='strains/static'
)

@user_bp.route('/posts', methods=['GET'])
def posts():
return get_posts()


# posts/models.py

# import sql-alchemy db instance created with factory application
from blog_app import db


class Post(db.Model):
"""
A simple model with a string based column 'content'.
"""
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.String(96), nullable=False)

def __repr__(self):
return f"post id: {self.id}"
# users/models.py

# import sql-alchemy db instance created with factory application
from blog_app import db


class User(db.Model):
"""
A simple model with a string based column 'name'.
"""
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(96), nullable=False)

def __repr__(self):
return f"post id: {self.name}"

这些蓝图是帮助保持路由模块化的对象,以及我如何能够创建 User 和 Post 包,其中包含与应用程序特定部分相关的所有模块。例如,包将具有模型、将与 View 连接的 url 路由,以及最终呈现动态 HTML 的模板。

flask 应用程序对象是使用 application factory function 创建的在 blog_app/__init__.py 中找到:

# blog_app/__init__.py

# Import package dependencies

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

# Global libraries
db = SQLAlchemy()
migrate = Migrate()


def create_app():
"""Initialize core application."""
app = Flask(__name__, instance_relative_config=False)
"""
Configure application from Config class in project-level
config.py module.
"""

app.config.from_object('yourconfig.Config')

# Initialize plugins
db.init_app(app)
migrate.init_app(app, db)

with app.app_context():
from blog_app.posts import routes as posts_routes
from blog_app.users import routes as users_routes

# Register Blueprints
app.register_blueprint(posts_routes.post_bp)
app.register_blueprint(users_routes.user_bp)

return app

从模板访问路由:

<a href="{{ url_for('posts_bp.posts') }}">Posts</a>

关于python - 如何在 Flask 中引用多个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28284365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com