Python——Flask框架——程序的结构

时间:2022-12-06 10:31:13

一、项目结构

|-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框架学习&lpar;二&rpar;——第一个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框架学习&lpar;一&rpar;——准备工作和环境配置与安装

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

  7. &num;3使用html&plus;css&plus;js制作网页 番外篇 使用python flask 框架 &lpar;II&rpar;

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

  8. &num;3使用html&plus;css&plus;js制作网页 番外篇 使用python flask 框架 &lpar;I&rpar;

    #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. CRM域用户误删恢复

    记录一下: 不小心将CRM用户在域中删除了(CRM中未删除),直接新建一个同样账号的域用户然后尝试在CRM中登录报“invalid user”错误,一番检查发现从2011版本开始CRM中不单记录了用户 ...

  2. 关于 redis、memcache mongoDB 的对比

    from:http://yang.u85.us/memcache_redis_mongodb.pdf 从以下几个维度,对 redis.memcache.mongoDB 做了对比.1.性能都比较高,性能 ...

  3. CloseHandle&lpar;IntPtr handle&rpar;抛异常

    [DllImport("Kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] public static ext ...

  4. &lbrack;bzoj1296&rsqb;&lbrack;SCOI2009&rsqb;粉刷匠(泛化背包)

    http://www.lydsy.com:808/JudgeOnline/problem.php?id=1296 分析: 首先预处理出每一行的g[0..T]表示这一行刷0..T次,最多得到的正确格子数 ...

  5. 不等高cell的tableView界面搭建

    一.搭建界面 1.界面分析 分析界面的层次结构,分析界面应该用什么控件来搭建 2.界面层次结构 分析之后,我们可以把这个界面分为四个模块(topView middleView commentView ...

  6. Sass学习笔记(补充)

    阅读目录 1. Sass和SCSS的区别 2. @while循环 3. @at-root 4. @content 5. 凸显注释 6. CSS输出样式 7. 重置浏览器样式 8. Sass调试和@de ...

  7. 使用rsync在windows&lpar;服务端&rpar;与linux&lpar;客户端&rpar;之间同步

    说明: 1.cwRsyncServer服务端 系统:Windows7 IP地址:192.168.0.110 2.Rsync客户端 系统:CentOS 6.7 IP地址:192.168.0.141 实现 ...

  8. java数组2

    package lastt; public class last { String name;int age; public last(String name,int age) { this.name ...

  9. maya cmds pymel &&num;39&semi;ESC&&num;39&semi; 退出 while, for 循环

    maya cmds pymel 'ESC' 退出 while, for 循环 import maya.cmds as cmds cmds.progressWindow(isInterruptable= ...

  10. UGUI脚本添加Btn回调的方法

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ...