模型分离

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

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

from datetime import datetime
from werkzeug.security import  generate_password_hash,check_password_hash
from exits import db

class 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)   #内部使用

    @property
    def password(selfs):
        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)
    creatTime=db.Column(db.DateTime,default=datetime.now)
    authorID=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‘))
    detail=db.Column(db.Text,nullable=False)
    creatTime=db.Column(db.DateTime,default=datetime.now)
    question=db.relationship(‘Question‘,backref=db.backref(‘comments‘,order_by=creatTime.desc))
    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。

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

from flask import Flask,render_template,request,redirect,url_for,session
import config
from functools import wraps
from sqlalchemy import or_
from models import Question,User,Comment
from exits import db

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

db.init_app(app)

原文地址:https://www.cnblogs.com/lkm123/p/8117255.html

时间: 2024-11-08 13:09:34

模型分离的相关文章

模型分离(选做)

模型分离--让代码更方便管理 新建models.py,将模型定义全部放到这个独立的文件中. 新建exts.py,将db = SQLAlchemy()的定义放到这个独立的文件中. models.py和主py文件,都从exts.py中导入db. 在主py文件中,对db进行始化,db.init_app(app). models.py from datetime import datetime from werkzeug.security import generate_password_hash,ch

Linux设备驱动模型--分离分层思想

一.设备驱动的分层思想:以platform设备驱动.input设备驱动为例看看他们在分层思想上的体现 [1]在核心层:一类设备总线通用的功能特性,如果某一设备支持的总线比较特别可以不使用这些功能特性,在自己的设备总线结构体中 进行重载. 例(1)platform核心层:定义在drivers/base/platform.c文件 Linux内核对设备总线先进行了一次全局的抽象,即概括了所有设备驱动总线具有的功能特性: struct bus_type { //具备总线名.总线属性.总线上设备属性.总线

MVC模型概述(1)

摘自( 私塾在线,跟开涛学SpringMVC) 1.标准MVC模型概述       MVC模型(Model-View-Controller)是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离.流程控制逻辑.业务逻辑调用与展示逻辑分离. Model提供要展示的数据.View负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西.Controller接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示

MVC模型简介

MVC模型:是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离.流程控制逻辑.业务逻辑调用与展示逻辑分离. 首先让我们了解下MVC(Model-View-Controller)三元组的概念; Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为).也就是模型提供了模型数据查询和模型数据的状态更新等功能,包

程序员必读书籍及导读指南

最近在网上看了一个非常好的帖子<程序员一生必读的书>(我的腾讯微博上有分享该贴子链接,有兴趣就点击进去看看吧),该贴的第一个张图片是一个雷达图, 这张图是由ThoughtWorks(全球软件设计与定制领域的领袖级企业)的资深人士提供的,它将程序员要读的书分为四个类别,每个类别又分为初级.进阶和高级读物,并用黄色三角形点出了强烈推荐阅读的书籍.四个类别包括: 编程实践(Coding Practice) 设计与架构(Design & Architecture) 方法学(Methodolog

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

来源: Android App的设计架构:MVC,MVP,MVVM与架构经验谈 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计: 我的App需要应用这些设计架构吗? MVC,MVP等架构讲的是什么?区别是什么? 本文就来带你分析一下这几个架构的特性,优缺点,以及App架构设计中应该注意的问题. 1.架构设计的目的 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员

《程序员修炼之道》笔记(五)

*续 第五章弯曲,或折断 4 它只是试图 a) 以一个电子表格应用举例,除了显示表格,还要能把数值显示为柱状图,还有总计功能.实现的大概过程为:首先创建一个模型(数据自身),以及用于对其操纵的常用操作:然后创建不同的视图,以不同方式显示数据,作为表格.柱状图.总计框,每个视图都有自己的控制器. b) 让视图与模型分离,可以用低廉的代价为自己换来许多灵活性,MVC是最为重要的维护可撤销性的途径之一. c) MVC 模型,表示目标对象的抽象数据模型.模型对任何视图或控制器都没有直接的了解 视图.解释

javaweb学习总结(二十一)——JavaWeb的两种开发模式

SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1.1.jsp+javabean开发模式架构 jsp+javabean开发模式的架构图如下图(图1-1)所示 图1-1 在jsp+javabean架构中,JSP负责控制逻辑.表现逻辑.业务对象(javabean)的调用. JSP+JavaBean模式适合开发业务逻辑不太复杂的web应用程序,这种模式下

框架选型

前面的话 有一个流传较广的笑话,一个人在stackoverflow中提了一个问题,如何使用javascript实现一个数字与另外一个数字相加.最高票回答是你应该使用jQuery插件,jQuery插件可以做任何事情. 历史总是在重演,以前是jQuery,现在可能是react或vue.不同的框架有不同的应用场景,杀鸡不要用牛刀.本文将详细介绍框架选型 框架与库 库(lib)具有以下三个特点: 1.是针对特定问题的解答,具有专业性: 2.不控制应用的流程 3.被动的被调用 框架(frameword)具