创建一个虚拟环境bbs,并安装flask框架

#cmd进入DOS窗口

mkvirtualenv bbs
pip install flask

在本地磁盘D新建项目目录:bbs

打开pycharm,创建flask项目

新建两个文件,config.py( 配置文件)、exts.py(用于第三方库)

项目分为前台(front)、后台(cms)、公共(common)

因此这里配置上面3个蓝图

新建一个python package命名为apps,在apps下新建三个python package分别命名为:cms、common、front

这3个蓝图都会有自己的数据模型和视图,则在它们各自下新建文件models.py、views.py,前台和后台肯定会有表单验证,因此也新建forms.py

cms.view.py

from flask import Blueprint

bp = Blueprint('cms', __name__, url_prefix='/cms')

@bp.route('/')
def index():
return 'cms index'

common.py

from flask import Blueprint

bp = Blueprint('common', __name__, url_prefix='/common')

@bp.route('/')
def index():
return 'common index'

front.py

from flask import Blueprint

bp = Blueprint('front', __name__) #因为前台是直接访问就不用加url_prefix

@bp.route('/')
def index():
return 'front index'

编辑cms.__init__.py、common.__init__.py、front.__init__.py,这样做的好处就是可以这样导入蓝图:from apps.cms import bp

from .views import bp

编辑bbs.py注册蓝图,该文件不编辑任何视图及url

from flask import Flask
import config
from apps.cms import bp as cms_bp
from apps.common import bp as common_bp
from apps.front import bp as front_bp app = Flask(__name__)
app.config.from_object(config) #引入配置文件 app.register_blueprint(cms_bp)
app.register_blueprint(common_bp)
app.register_blueprint(front_bp) if __name__ == '__main__':
app.run()

编辑config.py开启DEBUG模式

DEBUG = True

最后启动项目

配置数据库信息创建数据库

MySQL创建数据库bbs

address: 127.0.0.1:3306
database: bbs
username: root
password: 123456

安装相关的库

workon bbs #进入虚拟环境
pip install pymysql
pip install flask-sqlalchemy
pip install flask-script
pip install flask-migrate

编辑配置文件config.py配置数据库连接信息

DEBUG = True

#MySQL Database
HOST = '127.0.0.1'
PORT = ''
USERNAME = 'root'
PASSWORD = ''
DATABASE = 'bbs' DB_URI = 'mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset-utf8'.format(username=USERNAME,
password=PASSWORD,
host=HOST,
port=PORT,
db=DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False

编辑exts.py初始化SQLAlchemy

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

创建一个manage.py用来写迁移脚本

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from bbs import app
from exts import db manager = Manager(app) Migrate(app, db)
manager.add_command('db', MigrateCommand) if __name__ == '__main__':
manager.run()

在主程序bbs.py给db传入app

from exts import db
... db.init_app(app)

初始化迁移脚本

D:\bbs>workon flask-env
(flask-env) D:\bbs>python manage.py db init

25、Flask实战第25天:项目结构搭建的更多相关文章

  1. MVC 实用构架实战(一)——项目结构搭建

    一.前言 在<上篇>中,已经把项目整体结构规划做了个大概的规划.在本文中,将使用代码的方式来一一解说各个层次.由于要搭建一个基本完整的结构,可能文章会比较长.另外,本系列主要出于实用的目的 ...

  2. 使用.NET 6开发TodoList应用(2)——项目结构搭建

    为了不影响阅读的体验,我把系列导航放到文章最后了,有需要的小伙伴可以直接通过导航跳转到对应的文章 : P TodoList需求简介 首先明确一下我们即将开发的这个TodoList应用都需要完成什么功能 ...

  3. NET 项目结构搭建

    NET 项目结构搭建 我们头开始,从简单的单项目解决方案,逐步添加业务逻辑的约束,从应用逻辑和领域逻辑两方面考虑,从简单的单个项目逐步搭建一个多项目的解决方案.主要内容:(1)搭建应用逻辑和领域逻辑都 ...

  4. vue2项目结构搭建

    vue2项目结构初搭建与项目基本流程 一.开始项目结构搭建的重要性 决定项目是否能够健康成长 决定了项目是否利于多人协作开发 决定了项目是否利于后期维护 决定了项目是否性能良好 决定了代码是否重用率降 ...

  5. SpringMVC+Spring+mybatis项目从零开始--分布式项目结构搭建

    转载出处: SpringMVC+Spring+mybatis+Redis项目从零开始--分布式项目结构搭建 /** 本文为博主原创文章,如转载请附链接. **/ SSM框架web项目从零开始--分布式 ...

  6. 架构系列:ASP.NET 项目结构搭建

    我们头开始,从简单的单项目解决方案,逐步添加业务逻辑的约束,从应用逻辑和领域逻辑两方面考虑,从简单的单个项目逐步搭建一个多项目的解决方案.主要内容:(1)搭建应用逻辑和领域逻辑都简单的单项目 (2)为 ...

  7. vue2.0 仿手机新闻站(二)项目结构搭建 及 路由配置

    1.项目结构 $ vue init webpack-simple news $ npm install vuex vue-router axios style-loader css-loader -D ...

  8. 从零开始Vue项目实战(三)-项目结构

    目录结构 ├── README.md 项目介绍 ├── index.html 入口页面 ├── build 构建脚本目录 │ ├── build-server.js 运行本地构建服务器,可以访问构建后 ...

  9. 实战_2:eclipseRCP项目结构

    RCP项目目录结构如下: src: java源码目录 bin:class文件目录 JRE System Library: 系统类库依赖,主要是JDK,JRE相关的 Plugin-in Dependen ...

随机推荐

  1. 「模板」 FHQ_Treap 区间翻转

    「模板」 FHQ_Treap 区间翻转 没有旋转的 Treap 实现区间操作的功能,很好理解,也很好写,只是速度不算太快. 对于要翻转的区间,把整棵 Treap(存有区间 \([1,n]\) 的信息) ...

  2. wcf 服务创建,配置,测试

    一.WCF创建: 常规的创建WCF服务是通过SOAP传输的,很多网站开发人员想放弃使用XML而使用JSON,这个时候可以参照:http://www.cnblogs.com/zhili/p/WCFRes ...

  3. JVM-内存回收算法--复制算法

    复制算法,它将堆上的内存分为两个大小相等的区域,一个是空闲区域,一个是活动区域.在程序运行中,实际使用的是活动区域,也就是有50%的空间被浪费掉. 复制算法的实现过程:1.找出活动空间中所有存活的对象 ...

  4. 【51NOD-0】1019 逆序数

    [算法]离散化+树状数组(求逆序对) [题解]经典,原理是统计在i之前插入的且值≤i的个数,然后答案就是i-getsum(i) #include<cstdio> #include<a ...

  5. hdu 1016 Prime Ring Problem (素数环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 题目大意:输入一个n,环从一开始到n,相邻两个数相加为素数. #include <iost ...

  6. css 背景透明,文字不透明

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  7. Python模块学习 - Fileinput

    Fileinput模块 fileinput是python提供的标准库,使用fileinput模块可以依次读取命令行参数中给出的多个文件.也就是说,它可以遍历 sys.argv[1:],并按行读取列表中 ...

  8. 学习 Linux,101: 自定义或编写简单脚本【转】

    转自:http://www.ibm.com/developerworks/cn/linux/l-lpic1-105-2/index.html 学习如何使用标准的 shell 语法.循环和控制结构,以及 ...

  9. c#上传文件时,当选择的文件为0kb,会验证不通过

    FileUpload1.HasFile 当FileUpload1控件选择的文件为0KB时,FileUpload1.HasFile返回false

  10. Python爬虫数据处理

    一.首先理解下面几个函数 设置变量 length()函数 char_length() replace() 函数 max() 函数1.1.设置变量 set @变量名=值 set @address='中国 ...