这里我直接分享方法,因为我还有点没搞太明白,所以暂不叙述过多,后面再来补充
我在对应的版块内(也就是跟蓝图同级别),新增了models.py文件,内容如下:
from project import testmyselfdb
from sqlalchemy.orm import Mapped, mapped_column, relationship
# from project import db
from project.extension import db
# 资源内容模型
class Resource(db.Model):
__tablename__ = 'resource'
id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
r_type = db.Column(db.INTEGER, default=0, comment='resource type 0 文献 1 指南 2 大会')
is_show = db.Column(db.INTEGER, default=0, comment='是否上架 0 未上架 1 上架')
title = db.Column(db.String(40))
desc = db.Column(db.TEXT)
cover = db.Column(db.String(40))
published_time = db.Column(db.String(40))
content = db.Column(db.TEXT)
file_path = db.Column(db.String(128))
origin_link = db.Column(db.String(128))
view_count = db.Column(db.INTEGER)
like_count = db.Column(db.INTEGER)
collect_count = db.Column(db.INTEGER)
file_size = db.Column(db.String(40))
publisher_book_name = db.Column(db.String(40))
resource_type_id = db.Column(db.INTEGER)
def to_format(self):
return {
"id": self.id,
"title": self.title,
"published_time": self.published_time,
"view_count": self.view_count,
"publisher_book_name": self.publisher_book_name
}
def __repr__(self) -> str:
return f'<Resource id={self.id} title={self.title}>'
数据库连接配置请参考这里;
前面在蓝图的使用中说到,个人认为蓝图是php中的控制器+路由的作用,那么根据以往经验,就需要在蓝图里操作数据库(MVC嘛)。参考我的蓝图代码:
from flask import Blueprint, request, jsonify
from typing import List
from . import models
blog_base_blueprint = Blueprint('blog', __name__, url_prefix='/api')
# 获取所有博客文章列表
@blog_base_blueprint.route('/posts', methods=['GET'])
def get_posts():
resource_id = request.args.get('resource_id', 10)
resource_lists: List[models.Resource] = (models.Resource.query
.filter(models.Resource.id == resource_id)
.all())
return jsonify({
'code': 0,
'msg': 'success',
'data': {
"resource_list": [resource.to_format() for resource in resource_lists]
}
})
到目前为止,我所有的文件目录是这样的:
- app.py是我项目的入口;
- project文件夹是我所有的业务逻辑存放的地方,在project里,我又根据不同的版块创建了不同的文件夹。那些通用的逻辑比如说配置文件、扩展之类的,我放在了project的最外层,方便project下的每个模块调用。
- ---- 在project下的blog文件夹里,我存放了跟博客(资源)相关的所有逻辑处理,包括但不限于增删改查上传。blog里又细分了C(蓝图)、M(模型)、S(服务)的逻辑文件,一目了然
宣传一波:大家若是有人想北京租房可以联系我,主要是物资学院、通州北关、北苑、草房的房子。(注:我不是中介哟,我也不打算转行做中介,是我靠谱的朋友在做)