Flask python 开发篇:模型(model)的使用

这里我直接分享方法,因为我还有点没搞太明白,所以暂不叙述过多,后面再来补充

我在对应的版块内(也就是跟蓝图同级别),新增了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(服务)的逻辑文件,一目了然
    在这里插入图片描述

宣传一波:大家若是有人想北京租房可以联系我,主要是物资学院、通州北关、北苑、草房的房子。(注:我不是中介哟,我也不打算转行做中介,是我靠谱的朋友在做)
在这里插入图片描述

相关推荐

  1. license系统模型设计使用django models

    2024-03-26 11:18:04       33 阅读
  2. Flask python 开发:蓝图使用

    2024-03-26 11:18:04       45 阅读
  3. Django中models使用

    2024-03-26 11:18:04       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 11:18:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 11:18:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 11:18:04       87 阅读
  4. Python语言-面向对象

    2024-03-26 11:18:04       96 阅读

热门阅读

  1. 【无标题】

    2024-03-26 11:18:04       39 阅读
  2. C语言复习--数组,函数

    2024-03-26 11:18:04       44 阅读
  3. X进制减法(贪心算法C++实现)

    2024-03-26 11:18:04       40 阅读
  4. 未来的智慧能源发展趋势:智能、高效和普及

    2024-03-26 11:18:04       37 阅读
  5. 企业产品网络安全建设日志3月25

    2024-03-26 11:18:04       40 阅读
  6. 讨论物联网如何帮助监测和改善环境质量

    2024-03-26 11:18:04       45 阅读
  7. 【华大 HC32L110】低功耗开发记录

    2024-03-26 11:18:04       43 阅读
  8. Linux C++ 004-流程控制语句

    2024-03-26 11:18:04       32 阅读
  9. C++前端述职报告

    2024-03-26 11:18:04       42 阅读