一、项目结构

|-flasky
|-app Flask程序一般都保存在这里
|-templates/
|-static/
|main/
|-__init__.py
|-errors.py
|-forms.py
|-views.py
|-__init__.py
|-email.py 电子邮件函数
|-models.py 数据库模型
|-migrations/ 包含数据库迁移的脚本
|-tests/ 单元测试
|-__init__.py
|test*.py
|-venv/ 包含Python虚拟环境
|requirements.txt 列出所有依赖包
|config.py 存储配置
|manage.py 用于启动程序

二、config.py程序配置(实例)

  基类中包含通用配置,子类分别定义了专用配置

import os
basedir = os.path.abspath(os.path.dirname(__file__)) class Config :
SECRET_KEY = os.environ.get('SECRET_KEY') or 'hard to guess string'
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
FLASKY_MAIL_SUBJECT_PREFIX = '[Flasky]'
FLASKY_MAIL_SENDER = 'Flasky Admin <flasky@example.com>'
FLASKY_ADMIN = os.environ.get('FLASKY_ADMIN') @staticmethod
def init_app(app):
pass class DevelopmentConfig(Config):
DEBUG = True
MAIL_SERVER = 'smtp.cooglemail.com'
MAIL_PORT = 587
MAIL_USE_TLS = True
MAIL_USERNAME = os.environ.get('MAIL_ISERNAME')
MAIL_PASSWORD = os.environ.get('MAIL_PASSWORD')
SQLALCHEMYU_DATABASE_URL = os.environ.get('SQLALCHEMYU_DATABASE_URL') or 'sqlite:///' + os.path.join(basedir,'data.sqlite') class TestingConfig(Config):
TESTING = True
SQLALCHEMYU_DATABASE_URL = os.environ.get('TEST_DATABASE_URL') or 'sqlite:///' + os.path.join(basedir,'data-test.sqlite') class ProductionConfig(Config):
SQLALCHEMYU_DATABASE_URL = os.environ.get('DATABASE_URL') or 'sqlite:///' + os.path.join(basedir,'data.sqlite') config = {
'development' : DevelopmentConfig,
'testing' : TestingConfig,
'production' : ProductionConfig,
'default' : DevelopmentConfig
}

三、程序工厂函数

四、蓝本实现程序功能

**在蓝本中编写错误处理程序稍有不同,如果使用errorhandler修饰器,那么只有蓝本中的错误才能出发处理程序,要想注册程序全局的错误处理程序,必须使用app_eerrorhandler

(1)app/main/views.py蓝本定义的程序路由

from datetime import datetime
from flask import render_template,session,redirect,url_for #下面引用的函数是错误的,可能是未在Flask框架下
from . import main
from .forms import NameForm
from .. import db
from ..models import User
@main.route('/',menthods=['GET','POST'])
def index():
form = NameForm()
if form.validate_on_sumbit():
#...
return redirect(url_for('.index'))
return render_template('index.html',form=form,name=session.get('name'),known=session.get('known',False),current_time=datetime.utcnoww())

五、启动脚本(manage.py)

import os
from app import create_app,db
from app.models import User,Role
from flask.ext.script import Manager,Shell
from flask.ext.migrate import Migrate,MigrateCommand app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)
migrate = Migrate(app)
def make_shell_context():
return dict(app=app,db=db,User=User,Role=Role) manager.add.command('shell',Shell(make_context=make_shell_context))
manager.add.command('db',MigrateCommand) if __name__ == '__main__':
manager.run()

**这个脚本先创建程序,如果定义了环境变量FLASK_CONFIG,则从中读取配置名;否则使用默认配置,然后初始化Flask-Script,Flask-Migrate和位Python shell定义的上下文。

六、需求文件(requirements.txt)

  requirements.txt文件,用户记录所有依赖包机器精准的版本号

  安装对应依赖包的版本号: pip install -r requirements.txt

七、单元测试(test.py)

Python——Flask框架——程序的结构的更多相关文章

  1. Python——Flask框架——程序的基本结构

    一.安装 pip install flask 二.初始化 from flask import Flask app = Flash(__name__) 三.路由:处理URL和函数之间的关系的程序称为路由 ...

  2. python flask框架学习(二)——第一个flask程序

    第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...

  3. Python Flask框架路由简单实现

    Python Flask框架路由的简单实现 也许你听说过Flask框架.也许你也使用过,也使用的非常好.但是当你在浏览器上输入一串路由地址,跳转至你所写的页面,在Flask中是怎样实现的,你是否感到好 ...

  4. Linux ubantu中安装虚拟/使用环境virtualenv以及python flask框架

    今天学习了python flask框架的安装过程以及使用案例,感觉网上讲的东西都没有从我们这种初学者的角度去考虑(哈哈),最后还是奉上心得: 1.安装virtualenv $ sudo apt-get ...

  5. python flask框架学习——开启debug模式

    学习自:知了课堂Python Flask框架——全栈开发 1.flask的几种debug模式的方法 # 1.app.run 传参debug=true app.run(debug=True) #2 设置 ...

  6. python flask框架学习(一)——准备工作和环境配置与安装

    Flask装备: 学习自:知了课堂Python Flask框架——全栈开发 1.Python版本:3.6 2.Pycharm软件: 3.安装虚拟环境: (1)安装virtualenv: pip ins ...

  7. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...

  8. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...

  9. python flask框架详解

    Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pi ...

随机推荐

  1. 滑动和animate以及如何停止动画

    又是一天过去了,今天复习了slideDown.slideUp.slideToggle以及animate和stop的用法. <!DOCTYPE html> <html> < ...

  2. Network Policy - 每天5分钟玩转 Docker 容器技术(171)

    Network Policy 是 Kubernetes 的一种资源.Network Policy 通过 Label 选择 Pod,并指定其他 Pod 或外界如何与这些 Pod 通信. 默认情况下,所有 ...

  3. Python模块time、datetime

    模块: 模块是一系列常用功能的集合体,一个py文件就是一个模块. 一.模块的作用: 1.从文件级别组织程序,方便管理,随着程序的发展,功能越来越多,我们通常将程序分成一个个py文件,这样做程序的结构更 ...

  4. Spring Boot 正常启动后访问Controller提示404

    问题描述 今天重新在搭建Spring Boot项目的时候遇到访问Controller报404错误,之前在搭建的时候没怎么注意这块.新创建项目成功后,作为项目启动类的Application在com.bl ...

  5. Python开发【第三篇】基本数据类型

    整型 int __author__ = 'Tang' # 将字符串转换为数字 a = " b = int(a) # 前面是0的数转换,默认base按照十进制 a = " b = i ...

  6. mn

    http://image.uczzd.cn/10129986679866437816.jpg?id=0&from=export https://www.cnblogs.com/ityoukno ...

  7. bsp总结

    就版本.nand nor. led三样本周,六六六 1. bsp坏块--- => nand bad Device 0 bad blocks:047600000600000007fe0000=&g ...

  8. JS中的闭包(closure)

    JS中的闭包(closure) 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面就是我的学习笔记,对于Javascript初学者应该是很有用 ...

  9. 【转】简单理解Vue中的nextTick

    前言: Vue中的nextTick涉及到Vue中DOM的异步更新,感觉很有意思,特意了解了一下.其中关于nextTick的源码涉及到不少知识,很多不太理解,暂且根据自己的一些感悟介绍下nextTick ...

  10. SQL AUTO INCREMENT 字段

    Auto-increment 会在新记录插入表中时生成一个唯一的数字. AUTO INCREMENT 字段 我们通常希望在每次插入新记录时,自动地创建主键字段的值. 我们可以在表中创建一个 auto- ...