当前位置: 首页 > news >正文

模型分离(选做)

模型分离--让代码更方便管理

新建models.py,将模型定义全部放到这个独立的文件中。

from werkzeug.security import generate_password_hash,check_password_hash
from datetime import datetimeclass User(db.Model):
    __tablename__ = 'User'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(20),nullable=False)
    _password = db.Column(db.String(200),nullable=False)
    nickname = db.Column(db.String(20))

    @property
    def password(self):  # 外部使用,取值
        return self._password

    @password.setter
    def password(self, row_password):  # 外部使用,赋值
        self._password = generate_password_hash(row_password)

    def check_password(self, row_password):  # 密码验证
        result = check_password_hash(self._password, row_password)
        return result


class Question(db.Model):
    __tablename__='question'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    title =db.Column(db.String(100), nullable=False)
    detail = db.Column(db.Text, nullable=False)
    creat_time=db.Column(db.DateTime,default=datetime.now)
    author_id = db.Column(db.Integer,db.ForeignKey('User.id'))
    author=db.relationship('User',backref=db.backref('question'))


class Comment(db.Model):
    __tablename__ = 'comment'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    author_id = db.Column(db.Integer, db.ForeignKey('User.id'))
    question_id = db.Column(db.Integer, db.ForeignKey('question.id'))
    creat_time = db.Column(db.DateTime, default=datetime.now)
    detail = db.Column(db.Text, nullable=False)
    question = db.relationship('Question', backref=db.backref('comments'))
    author = db.relationship('User', backref=db.backref('comments'))

 

新建exts.py,将db = SQLAlchemy()的定义放到这个独立的文件中。

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

 

models.py和主py文件,都从exts.py中导入db。

from exts import db

 

在主py文件中,对db进行始化,db.init_app(app)。

from model import Question,User,Comment

app=Flask(__name__)
app.config.from_object(config)
db.init_app(app)

 

转载于:https://www.cnblogs.com/arashinoj/p/8117020.html

相关文章:

  • 游戏全区全服和分区分服 QQ斗地主的设计
  • 【习题 7-7 UVA-12558】Egyptian Fractions (HARD version)
  • 仿腾讯固定导航栏
  • window进行缩放时左侧菜单高度随之变化
  • 如何将pdf文件的英文翻译成中文
  • mac用BootCamp装windows装完之后驱动问题
  • Jquery命名冲突解决的五种方案
  • 【margin与padding的区别与用法】
  • MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
  • 十三、视图
  • POJ3415 Common Substrings
  • Mysql-where子句与having子句的区别
  • 2017总结及2018计划
  • 使用tree生成目录结构
  • BGP 路由属性 公认必遵 AS_PATH
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 〔开发系列〕一次关于小程序开发的深度总结
  • angular学习第一篇-----环境搭建
  • conda常用的命令
  • CSS 专业技巧
  • learning koa2.x
  • PAT A1050
  • php的插入排序,通过双层for循环
  • 初识 webpack
  • 从伪并行的 Python 多线程说起
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 回顾 Swift 多平台移植进度 #2
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 浏览器缓存机制分析
  • 前端知识点整理(待续)
  • 双管齐下,VMware的容器新战略
  • 思维导图—你不知道的JavaScript中卷
  • 移动端解决方案学习记录
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 最近的计划
  • # 安徽锐锋科技IDMS系统简介
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #1014 : Trie树
  • #if 1...#endif
  • #单片机(TB6600驱动42步进电机)
  • (10)ATF MMU转换表
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)ssm码农论坛 毕业设计 231126
  • (十八)SpringBoot之发送QQ邮件
  • (五)Python 垃圾回收机制
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)u-boot-nand.bin的下载
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)EXC_BREAKPOINT僵尸错误
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • .net core Swagger 过滤部分Api
  • .net6Api后台+uniapp导出Excel
  • .NET精简框架的“无法找到资源程序集”异常释疑