25、Flask实战第25天:项目结构搭建
创建一个虚拟环境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天:项目结构搭建的更多相关文章
- MVC 实用构架实战(一)——项目结构搭建
一.前言 在<上篇>中,已经把项目整体结构规划做了个大概的规划.在本文中,将使用代码的方式来一一解说各个层次.由于要搭建一个基本完整的结构,可能文章会比较长.另外,本系列主要出于实用的目的 ...
- 使用.NET 6开发TodoList应用(2)——项目结构搭建
为了不影响阅读的体验,我把系列导航放到文章最后了,有需要的小伙伴可以直接通过导航跳转到对应的文章 : P TodoList需求简介 首先明确一下我们即将开发的这个TodoList应用都需要完成什么功能 ...
- NET 项目结构搭建
NET 项目结构搭建 我们头开始,从简单的单项目解决方案,逐步添加业务逻辑的约束,从应用逻辑和领域逻辑两方面考虑,从简单的单个项目逐步搭建一个多项目的解决方案.主要内容:(1)搭建应用逻辑和领域逻辑都 ...
- vue2项目结构搭建
vue2项目结构初搭建与项目基本流程 一.开始项目结构搭建的重要性 决定项目是否能够健康成长 决定了项目是否利于多人协作开发 决定了项目是否利于后期维护 决定了项目是否性能良好 决定了代码是否重用率降 ...
- SpringMVC+Spring+mybatis项目从零开始--分布式项目结构搭建
转载出处: SpringMVC+Spring+mybatis+Redis项目从零开始--分布式项目结构搭建 /** 本文为博主原创文章,如转载请附链接. **/ SSM框架web项目从零开始--分布式 ...
- 架构系列:ASP.NET 项目结构搭建
我们头开始,从简单的单项目解决方案,逐步添加业务逻辑的约束,从应用逻辑和领域逻辑两方面考虑,从简单的单个项目逐步搭建一个多项目的解决方案.主要内容:(1)搭建应用逻辑和领域逻辑都简单的单项目 (2)为 ...
- vue2.0 仿手机新闻站(二)项目结构搭建 及 路由配置
1.项目结构 $ vue init webpack-simple news $ npm install vuex vue-router axios style-loader css-loader -D ...
- 从零开始Vue项目实战(三)-项目结构
目录结构 ├── README.md 项目介绍 ├── index.html 入口页面 ├── build 构建脚本目录 │ ├── build-server.js 运行本地构建服务器,可以访问构建后 ...
- 实战_2:eclipseRCP项目结构
RCP项目目录结构如下: src: java源码目录 bin:class文件目录 JRE System Library: 系统类库依赖,主要是JDK,JRE相关的 Plugin-in Dependen ...
随机推荐
- 「6月雅礼集训 2017 Day4」暴力大神hxx
[题目大意] 给出一个n重循环,每重循环有范围$[l, r]$,其中$l$,$r$可能是之前的变量,也可能是常数.求循环最底层被执行了多少次. 其中,保证每个循环的$l$,$r$最多有一个是之前的变量 ...
- UIActivityIndicatorView---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址: iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 UIActivityIndicatorViewactivityIndicatorVi ...
- bzoj 2440 dfs序
首先我们可以做一遍dfs,用一个队列记录每个点进出的顺序,当每个点访问的时候que[tot++]=x,记为in[x],当结束dfs的时候que[tot++]=x,记为out[x],这样处理出来的队列, ...
- spring boot web 入门
① 新建一个maven项目. ② pom中parent设为 spring-boot-starter-parent .建议使用最新的 RELEASE 版本.否则可能需要设置 <repositori ...
- python基础===* 解包,格式化输出和print的一点知识
python3中的特性: >>> name = "botoo" >>> print(f"my name is {name}" ...
- python爬虫模块之HTML下载模块
HTML下载模块 该模块主要是根据提供的url进行下载对应url的网页内容.使用模块requets-HTML,加入重试逻辑以及设定最大重试次数,同时限制访问时间,防止长时间未响应造成程序假死现象. 根 ...
- java的equal和==问题
看一本比较简略的java教程,在看到对象的时候,书上直接给我来一句: 刚看下觉得没什么问题,很有道理的一个东东嘛,但是出于习惯还是打了几行代码测试了一下,代码如下: class Person { pr ...
- 流程控制--while
/* while 是在有条件控制的情况下 进行的循环 */ [root@localhost test1]# vim .py //ADD #!/usr/bin/python n = while True ...
- FineReport——JS二次开发(工具栏按钮事件及说明)
首先获取到这个模板对象: document.getElementById('reportFrame').contentWindow.contentPane.方法名称(); 方法以及说明:
- 看懂sh脚本
1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编写脚本完成时 ...