创建一个虚拟环境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. 洛谷P3764 签到题 III

    题目背景 pj组选手zzq近日学会了求最大公约数的辗转相除法. 题目描述 类比辗转相除法,zzq定义了一个奇怪的函数: typedef long long ll; ll f(ll a,ll b) { ...

  2. Gulp、Grunt构建工具

    在Gulp中创建一个库从磁盘gulp.src读取源文件并通过磁盘管道写回内容到gulp.dest,可以理解成只是将文件复制到另一个目录. var gulp = require('gulp'); gul ...

  3. ie8下a标签中的图片出现边框

    1.ie8下a标签中的图片出现边框 <a href="#"><img src="horse.jpg"></a> 效果如图所示 ...

  4. 随机森林(Random Forest)详解(转)

    来源: Poll的笔记 cnblogs.com/maybe2030/p/4585705.html 1 什么是随机森林?   作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Fores ...

  5. Tomcat8配置默认项目

    <!-- 配置默认访问项目 --> <Host name="localhost" appBase="webapps" unpackWARs=& ...

  6. Linux汇编教程01: 基本知识

    在我们开始学习Linux汇编之前,需要简单的了解一下计算机的体系结构.我们不需要特别深入的了解,理解了一些基本概念对与我们理解程序会很有帮助.现在计算机的结构体系都是采用冯诺依曼体系结构的基础上发展过 ...

  7. USB 3.1 與 USB Type-C 解釋

    https://tw.transcend-info.com/Support/FAQ-940 以下的內容皆來自上面這個網址. 什麼是USB 3.1? 什麼是USB 3.1? USB 3.1為USB協會制 ...

  8. kernel cmdline

    從 lk 傳送到 kerel 的 cmdline 會放在開機後的 adb /proc/cmdline 開到 android 後,又會被讀出來 /system/core/init/util.cpp 27 ...

  9. 调用start()与run()的区别

    1.调用start()方法: 通知“线程规划器”当前线程已经准备就绪,等待调用线程对象的run()方法.这个过程就是让系统安排一个时间来调用Thread中的run()方法,使线程得到运行,启动线程,具 ...

  10. nginx升级步骤

    今天应开发的需求,需要在Nginx增加一个模块,并不能影响现有的业务,所以就必须要平滑升级Nginx,好了,不多说了 1:查看现有的nginx编译参数 /usr/local/nginx/sbin/ng ...