Python——Flask框架——程序的结构
一、项目结构
|-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框架——程序的结构的更多相关文章
- Python——Flask框架——程序的基本结构
一.安装 pip install flask 二.初始化 from flask import Flask app = Flash(__name__) 三.路由:处理URL和函数之间的关系的程序称为路由 ...
- python flask框架学习(二)——第一个flask程序
第一个flask程序 学习自:知了课堂Python Flask框架——全栈开发 1.用pycharm新建一个flask项目 2.运行程序 from flask import Flask # 创建一个F ...
- Python Flask框架路由简单实现
Python Flask框架路由的简单实现 也许你听说过Flask框架.也许你也使用过,也使用的非常好.但是当你在浏览器上输入一串路由地址,跳转至你所写的页面,在Flask中是怎样实现的,你是否感到好 ...
- Linux ubantu中安装虚拟/使用环境virtualenv以及python flask框架
今天学习了python flask框架的安装过程以及使用案例,感觉网上讲的东西都没有从我们这种初学者的角度去考虑(哈哈),最后还是奉上心得: 1.安装virtualenv $ sudo apt-get ...
- python flask框架学习——开启debug模式
学习自:知了课堂Python Flask框架——全栈开发 1.flask的几种debug模式的方法 # 1.app.run 传参debug=true app.run(debug=True) #2 设置 ...
- python flask框架学习(一)——准备工作和环境配置与安装
Flask装备: 学习自:知了课堂Python Flask框架——全栈开发 1.Python版本:3.6 2.Pycharm软件: 3.安装虚拟环境: (1)安装virtualenv: pip ins ...
- #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)
#3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...
- #3使用html+css+js制作网页 番外篇 使用python flask 框架 (I)
#3使用html+css+js制作网页 番外篇 使用python flask 框架(I 第一部) 0. 本系列教程 1. 准备 a.python b. flask c. flask 环境安装 d. f ...
- python flask框架详解
Flask是一个Python编写的Web 微框架,让我们可以使用Python语言快速实现一个网站或Web服务.本文参考自Flask官方文档, 英文不好的同学也可以参考中文文档 1.安装flask pi ...
随机推荐
- fork/join概述
Fork/Join是java 7 解决并发问题的解决方案. 是 java内部并行框架.核心思想分别为拆分任务和结果合并,在核心思想外,为了提高cpu多核的利用率,设计了工作窃取算法,并将工作队列设计为 ...
- java日期 Calendar类的使用
举例: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public clas ...
- 【资源分享】ArcFace Demo [Android]
虹软人脸识别引擎Android的Demo演示,可以直接下载使用. 下载地址: https://github.com/asdfqwrasdf/ArcFaceDemo readme: 工程如何使用? 下载 ...
- Thinkphp5整合微信扫码支付开发实例
ThinkPHP框架是比较多人用的,曾经做过的一个Thinkphp5整合微信扫码支付开发实例,分享出来大家一起学习 打开首页生成订单,并显示支付二维码 public function index() ...
- 【Linux】【Apatch Tomcat】Linux、CentOS7安装最新版Apartch Tomcat环境
1.前言 相当嫌弃,博客园搞掉了我快写完的 Tomcat. 请先安装 :[Linux][Java]CentOS7安装最新版Java1.8.191运行开发环境 虽然安装Tomcat没啥技术,但是还是记录 ...
- Python+ITchart实现微信中男女比例,城市分布统计并可视化显示
直接上代码: import itchat import os import csv import pandas as pd from pyecharts import Bar,Pie,Geo impo ...
- Class.isAssignableFrom与instanceof的区别
isAssignableFrom 假设有两个类Class1和Class2.Class1.isAssignableFrom(Class2)表示: 类Class1和Class2是否相同. Class1是否 ...
- maven常用仓库
==================2014-04-19添加========可访问=============================== http://nexus.openkoala.org/ ...
- 我的第一个python web开发框架(23)——代码版本控制管理与接口文档
书接上一回,小白和老菜聊到代码的版本控制和接口文档 小白:为什么要做版本控制,我不弄版本控制不也完成了项目了吗?要做版本控制不是很麻烦,又要安装服务又要提交代码,代码又不是多人用开发,还要写文档... ...
- 初学Django项目可能会遇到的问题
1. 出现莫名其妙的 app01 我项目中的app名字并不是app01,可是运行python manage.py makemigrations的时候总是提示app01不是已安装的app Applyin ...