一、项目架构:

研习了多天flask,今天终于按照标准流程写了一个实验demo,并实现了ORM调用,一起喜欢自己写原生SQL。废话不多说,来看项目文件结构

 mysite/
./config/
default.py#默认上线的配置文件
development.py#开放过程的配置文件
debug.py#调试过程的配置文件
./instance/
config.py#特殊的复写的配置文件
./utils/#自定义的lib库
tools1.py
tools2.py
./main/#app所在库
__init__.py#app定义
modles.py#ORM数据库代码文件
./views/#视图(路由)代码文件
user.py#模块一的蓝图文件,定义视图路由函数
./static/#静态文件所在文件夹
./templates/#模板文件所在文件夹
./docs/#文档文件文件夹
./libs/#css/js/ca等类型文件文件夹
requestment.py#以来库要求文件夹
manage.py#启动脚本

二、多层文件架构需要注意的坑

1、引入本文件夹下的__init__.py下的对象from . import xxx

2、引入文件寻址路径添加方式:

 import sys
sys.path.append(filepath)

3、注意互相引用时候的定义以来,比如A引用B的m,B引用的A的n,m需要n去定义,那么A中引入m一定要在n定义之后。

三、default.py的内容:

 DEBUG = True
SECRET_KEY = 'xxxx'
SQLALCHEMY_DATABASE_URI ="mysql://root:root@127.0.0.1:3306/webuser"#mysql连接的定义mysql://user:pass@host:port/databasename
SQLALCHEMY_TRACK_MODIFICATIONS = True

四、__init__.py app定义、数据库对象创建、蓝图函数注册:

 # -*- encoding:utf-8 -*-
import sys
sys.path.append("./")
from flask import Flask
from flask_sqlalchemy import SQLAlchemy myapp = Flask(__name__)
myapp.config.from_pyfile("../config/default.py")#读取配置文件
userdb = SQLAlchemy(myapp)#创建数据库连接对象
from views.user import User#引入模块User
myapp.register_blueprint(User)#蓝图注册函数

五、ORM定义数据库的方式modles.py

 # -*- encoding:utf-8 -*-

 #import lib files
from . import userdb#从__init__.py引入userdb对象 class UserTable(userdb.Model):
id = userdb.Column(userdb.Integer,primary_key=True,autoincrement=True)
name = userdb.Column(userdb.String(20))
def __init__(self,name):
self.name = name
def __repr__(self):
return '<UserTable %r>'%self.name
def show(self):
return self.name #创建表(一个类一个表):
"""
#类的属性就是表的列字段 创建函数就是数据库连接对象.Column(约束)
id = userdb.Column(userdb.Integer,primary_key=True,autoincrement=True)
name = userdb.Column(userdb.String(20))
"""

六、user.py模块 定义视图路由函数的文件

 # -*- encoding:utf-8 -*-
import sys
sys.path.append("../")
sys.path.append("../../")
from . import userdb#引入数据库连接对象
from models import UserTable#引入数据表对象
from flask import Blueprint,request,jsonify User = Blueprint("user",__name__)#创建蓝图 @User.route("/register",methods=["GET","POST"])#蓝图路由
def register():
if request.method == "GET":
user = request.args.get("username")
else:
user = request.forms.get("username")
try:
userdb.create_all()
except Exception,ex:
pass
retlist = UserTable.query.filter_by(name=user).all()
if len(retlist) > 0:
return jsonify({"message":"failed","reason":"username repeat!"})
else:
userobj = UserTable(user)
userdb.session.add(userobj)
userdb.session.commit()
return jsonify({"message":"success","reason":"Hello %s"%user})

七、启动脚本manage.py

 from mainapp.app import myapp

 if __name__ == "__main__":
myapp.run("127.0.0.1",port=5443)
#另外一种方式:
"""
from flask_script import Manager
manager = Manager(app)
#...
if __name__ == '__main__':
manager.run()"
(venv) $ python hello.py runserver --host 0.0.0.0 -p 5443
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
"""

八、requestments.txt

 pip freeze > requestments.txt

flask框架实战项目架构的更多相关文章

  1. WinForm企业级框架实战项目演练

    一.课程介绍 我们都知道在软件架构方式分为:C/S和B/S两类.这里阿笨不谈论两种软件架构的优劣之分,因为它们各有千秋,用于不同场合.一位伟大的讲师曾经说过一句话:事物存在即合理!录制这堂课程的目的就 ...

  2. flask框架搭建项目的具体步骤

    flask是一个使用python编写的轻量级Web应用框架.与django不同,Django创建工程时,会直接构架好工程目录.而flask工程几乎是自己创建结构. 1.导入相关模块以及需要使用的模块: ...

  3. Flask框架的学习与实战(二):实战小项目

    昨天写了一篇flask开发环境搭建,今天继续,进行一个实战小项目-blog系统. blog系统很简单,只有一个页面,然而麻雀虽小五脏俱全.这里目的不是为了做项目而做项目,这篇文章本意是通过这次练习传达 ...

  4. .NET开源作业调度框架(Quartz.NET和FluentScheduler)实战项目演练

    一.课程介绍 明人不说暗话,跟着阿笨一起玩NET .本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享 ...

  5. Flask框架2

    Flask框架的学习与实战(二):实战小项目   昨天写了一篇flask开发环境搭建,今天继续,进行一个实战小项目-blog系统. blog系统很简单,只有一个页面,然后麻雀虽小五脏俱全.这里目的不是 ...

  6. 应用程序框架实战二十二 : DDD分层架构之仓储(层超类型基础篇)

    前一篇介绍了仓储的基本概念,并谈了我对仓储的一些认识,本文将实现仓储的基本功能. 仓储代表聚合在内存中的集合,所以仓储的接口需要模拟得像一个集合.仓储中有很多操作都是可以通用的,可以把这部分操作抽取到 ...

  7. 应用程序框架实战十五:DDD分层架构之领域实体(验证篇)

    在应用程序框架实战十四:DDD分层架构之领域实体(基础篇)一文中,我介绍了领域实体的基础,包括标识.相等性比较.输出实体状态等.本文将介绍领域实体的一个核心内容——验证,它是应用程序健壮性的基石.为了 ...

  8. .NET Core实战项目之CMS 第九章 设计篇-白话架构设计

    前面两篇文章给大家介绍了我们实战的CMS系统的数据库设计,源码也已经上传到服务器上了.今天我们就好聊聊架构设计,在开始之前先给大家分享一下这几天我一直在听的<从零开始学架构>里面关于架构设 ...

  9. Flask框架从入门到实战

    Flask简介: Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSGI工具箱和 Jinja2模板引擎.使用 BSD 授权. Flask也被称为 " ...

随机推荐

  1. java后台json如何传递到jsp中解析

    需求:  系统前端jsp使用的是easyUi的datagrid展示了一些任务信息,任务信息中有个状态信息显示的值是数字, 需要根据后台保存的映射关系,将状态显示为描述信息. 原来的jsp前端显示: 解 ...

  2. 清除DataGridView显示的数据

    一.DataGridView未绑定数据时清空数据 this.dgv_PropDemo.DataSource = null 二.DataGridView绑定数据时清空数据 DataGridView绑定了 ...

  3. StarRTC , AndroidThings , 树莓派小车,公网环境,视频遥控(三)手机端

    原文地址:http://blog.starrtc.com/?p=111 这篇来介绍一下整个项目的手机端部分.在上一篇里我们已经将sdk导入到项目中了,下边直接用即可. 1 登录StarRTC的服务跟小 ...

  4. vim打开后乱码,xshell打开后也是乱码,设置自动出现行号

    Xshell对于嵌入式开发来说,是个非常不错的工具.但或许都有过被中文显示为乱码的问题感觉有点不爽.解决方法其实很简单的,即把xshell编码方式改成UTF-8即可. [文件]–>[打开]–&g ...

  5. 完美解决方案:wordpress后台进不去,用户名、密码输入了登陆没有反应(有更新)

    http://mingming4745.blog.163.com/blog/static/173845720119159425890/?suggestedreading ——————————————— ...

  6. Spring4 Web开发新特性

    基于Servlet3开发. 针对RESTful开发,提供了@RestController,加在Controller上面,免除了每个@RequestMapping method上面的@ResponseB ...

  7. 【Java面试题】30 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。

    题目如下: 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次, 接着再回到主线程又循环100,如此循环50次 思路如下: 子线程语主线程为互斥,可用SYNCHRONIZED.很容易想 ...

  8. Upgrade site collection from SP2010 to SP2013(Part 2)

    内容中包含 base64string 图片造成字符过多,拒绝显示

  9. 安装JDK出现问题 Error opening registry key'software\Javasoft\Java Runtime Environment'

    第一次安装JDK测试是否安装成功,打开cmd输入java -version 回车的时候出现如下错误: Error opening registry key'software\Javasoft\Java ...

  10. Makefile--基本规则(零)

    [版权声明:转载请保留出处:周学伟:http://www.cnblogs.com/zxouxuewei/] 一般一个稍大的linux项目会有很多个源文件组成,最终的可执行程序也是由这许多个源文件编译链 ...