|-- myproject
|-- config.py
|-- flask-env.yml
|-- manage.py
|-- app
| |-- models.py
| |-- __init__.py # 创建app实例的工厂函数
| |-- auth # auth蓝本
| | |-- forms.py
| | |-- views.py
| | |-- __init__.py
| | |-- templates
| |-- main # main蓝本
| | |-- errors.py
| | |-- forms.py
| | |-- views.py
| | |-- __init__.py
| |-- static
| | |-- css
| | |-- image
| | |-- js
| |-- templates
|-- migrations
|-- tests
| |-- __init__.py
|-- venv

1config.py

import os
basedir = os.path.abspath(os.path.dirname(__file__))

# 通用配置
class Config:
WTF_CSRF_SECRET_KEY = os.environ.get('WTF_CSRF_SECRET_KEY') or 'ao blog csrf key'
SECRET_KEY = os.environ.get('SECRET_KEY') or 'ao blog session key'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = False

# 初始化Flask实例,对当前环境的配置初始化
@staticmethod
def init_app(app):
app.config['SECRET_KEY'] = SQLALCHEMY_COMMIT_ON_TEARDOWN
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = SQLALCHEMY_COMMIT_ON_TEARDOWN
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = SQLALCHEMY_COMMIT_ON_TEARDOWN
app.config['WTF_CSRF_SECRET_KEY'] = SQLALCHEMY_COMMIT_ON_TEARDOWN

# 开发环境配置
class DevelopmentConfig(Config):
DEBUG = True
# SQLALCHEMY_TRACK_MODIF = True
SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')

class TestingConfig(Config):
TESTING = True
SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')

class ProductionConfig(Config):
SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URL') or \
'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite')

config = {
'dev': DevelopmentConfig,
'test': TestingConfig,
'prod': ProductionConfig,
'default': DevelopmentConfig
}
2manage.py 启动文件

import os

from flask_script import Manager, Shell
from flask_migrate import Migrate, MigrateCommand

from app import create_app
from app import db

app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)
migrate = Migrate(app, db)

def make_shell_context():
return dict(app=app, db=db)

manager.add_command('shell', Shell( make_context = make_shell_context() ) )
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
manager.run()

3views.py 视图函数类

from datetime import datetime

from flask import render_template, session, redirect, url_for

from . import main # 导入蓝本

@main.route('/home', methods = ['GET', 'POST']) # 定义路由
def index():
return render_template('welcome.html')

4app/__init__.py

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from flask_wtf.csrf import CSRFProtect

from config import config

db = SQLAlchemy()
csrf = CSRFProtect()

# 创建Flask实例,注册第三方扩展,调用config.init_app初始化
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)

db.init_app(app)
csrf.init_app(app)

#注册蓝本
from .main import main as main_blueprint
from .auth import auth as auth_blueprint
app.register_blueprint(main_blueprint)
app.register_blueprint(auth_blueprint, url_prefix = '/auth')

return app

flask基本项目结构的更多相关文章

  1. 【Flask】 项目结构说明

    项目结构 Flask的一大优势就是其极其轻量化.但是也需要注意到,如果我们要用Flask做一个大项目的话,把所有代码写在一个文件里肯定是不合适的.非常难以维护.但是和Django这种框架又不一样,Fl ...

  2. flask开发restful api系列(7)-蓝图与项目结构

    如果有几个原因可以让你爱上flask这个极其灵活的库,我想蓝图绝对应该算上一个,部署蓝图以后,你会发现整个程序结构非常清晰,模块之间相互不影响.蓝图对restful api的最明显效果就是版本控制:而 ...

  3. Flask 系列之 优化项目结构

    说明 操作系统:Windows 10 Python 版本:3.7x 虚拟环境管理器:virtualenv 代码编辑器:VS Code 实验目标 完善环境配置,添加 异常请求 处理 实现 400.404 ...

  4. flask实战-个人博客-虚拟环境、项目结构

    个人博客 博客是典型的CMS(Content Management system,内容管理系统),通常由两部分组成:一部分是博客前台,用来展示开放给所有用户的博客内容:另一部分是博客后台,这部分内容仅 ...

  5. 一个比较良好的flask项目结构

    一个比较良好的flask项目结构 project/ app/                    # 整个程序的包目录 static/                 # 静态资源文件 js/    ...

  6. Flask速成项目:Flask实现计算机资源的实时监控

    很多人都说使用Python开发WEB应用非常方便,那么对于WEB新手来说,到底有多方便呢?本文即将展示给你Python的魔法. 本文将通过一个实例:Flask实现计算机资源的实时监控,迅速带你入门Fl ...

  7. python 全栈开发,Day142(flask标准目录结构, flask使用SQLAlchemy,flask离线脚本,flask多app应用,flask-script,flask-migrate,pipreqs)

    昨日内容回顾 1. 简述flask上下文管理 - threading.local - 偏函数 - 栈 2. 原生SQL和ORM有什么优缺点? 开发效率: ORM > 原生SQL 执行效率: 原生 ...

  8. 巡风代码架构简介以及Flask的项目文件结构简介

    一.巡风: 巡风是一款什么东西,想必安全同行都不陌生吧.用它作为内网漏洞扫描管理架构是一种很好的选择,扫描快,开源,还可自己编写符合规则的POC直接放入相应目录来扩展.今天下午趁着有点时间捋了一下巡风 ...

  9. Python+Flask+Gunicorn 项目实战(一) 从零开始,写一个Markdown解析器 —— 初体验

    (一)前言 在开始学习之前,你需要确保你对Python, JavaScript, HTML, Markdown语法有非常基础的了解.项目的源码你可以在 https://github.com/zhu-y ...

  10. Flask大型项目框架结构理解

    导语:前段时间学习狗书的flask大型项目框架结构的时候有点混乱,到现在也知道是个啥了,想着,把关系理一理,写一篇博客.也方便后来学习的人查阅.以下是我创建项目时候的结构. myproject --- ...

随机推荐

  1. 20181224蒋嘉豪-exp5

    网络对抗技术Exp5 信息搜集与漏洞扫描20181224jjh 目录 网络对抗技术Exp5 信息搜集与漏洞扫描20181224jjh 信息搜集技术与隐私保护--知识点总结 间接收集 直接收集 社会工程 ...

  2. vue-多个卡片翻转动效

    <van-grid :column-num="2" class="content" :border="false" > < ...

  3. 4vue 属性绑定

    属性绑定v-bind <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  4. idea警告 breakpoints dramatically slow down

    idea启动项目提示的黄色警告 , 其实就是有地方断点之后 , 影响项目运行速 打开断点管理 , 查看具体是哪个影响了 , 断点不需要了及时取消

  5. Angular 管道和路由

    管道pipe: 要在HTML模板中指定值转换,请使用管道运算符(|). {{interpolated_value | pipe_name}} 您可以链接管道,发送一个管道功能的输出以被另一个管道功能转 ...

  6. Linux查看CPU 内存命令

    查看CPU 内存命令:https://www.cnblogs.com/ggjucheng/archive/2013/01/14/2859613.html 查看某一进程内存占用:ps -ef 获取PID ...

  7. CentOS7-mysql5.7.35安装配置

    一.下载网址 注:mysql从5.7的某个版本之后之后不再提供my-default.cnf文件,不耽误启动,想要自定义配置可以自己去/etc下创建my.cnf文件 全版本:https://downlo ...

  8. python-GUI-pyqt5之文件加密解密工具

    pyqt5的文件加密解密程序,用到base64,rsa和aes进行混合解密,代码比较杂乱,可自行整理,仅供学习参考之用,如需转载,请联系博主或附上博客链接,下面直接干货. 程序截图如下: # -*- ...

  9. BeanFactory与FactoryBean区别

    1. BeanFactory BeanFactory,以Factory结尾,表示它是一个工厂类(接口),用于管理Bean的一个工厂.在Spring中,BeanFactory是IOC容器的核心接口,也是 ...

  10. 自定义DOM事件函数封装

    非原生DOM触发,个性化定制的自定义事件. currentTarget(DOM对象):要触发事件的元素节点. type(字符串):触发的事件类型,例如"keydown". bubb ...