最近有一些同学问了我一些项目结构的问题 所以今天给大家专门讲解 解耦后的项目 目录我会分为两种方式:一种是普通解耦 一种是多mvc解耦

首先 我没先建立我们程序的文件夹并且在这个文件夹内写一个和这个文件夹一样的文件夹 然后再建立启动主文件manage.py

然后在内部的和主文件夹一样的文件夹内再建立一个__init__.py文件这个文件是你的生成app和app调用的所有主内容

__init__.py

from flask import Flask
from config import set1 # 导入配置文件 def create_app():
app = Flask(__name__) # 导入配置文件
app.config.from_object("config.set1") #接收配置配置文件
app.logger.error(set1.dict) #导入蓝图
from biaozhun.views.comment import ac
from biaozhun.views.user import user
app.register_blueprint(ac)
app.register_blueprint(user) return app

然后在你的manage.py文件内是你的启动文件

manage.py

from biaozhun import create_app

app =create_app()

if __name__ == "__main__":
app.run("127.0.0.1",9980,debug = True)

其中的内部文件夹的目录是templates必须是这个名字这个存放的是你的前端界面

我们把每一个模块都放在蓝图中去实现 这个时候就用到了views,然后我没把路由分配也交给了蓝图去实现

这个里面的views的user和comment也是蓝图

user.py

from flask import Blueprint,render_template

user = Blueprint("user",__name__) #生成蓝图对象

@user.route("/user_list") #使用蓝图对象来分发路由
def show_user():
return render_template("user_list.html")

comment.py

from flask import Blueprint
from config import set1 # 导入配置文件 ac = Blueprint("account",__name__) @ac.route("/login") def login():
return "登陆%s"%str(set1.dict)

然后我没的config是我没的配置文件有的人也喜欢叫settings都可以的

配置文件就和以前的使用是一样的了

还有另一种的存放:

Flask做项目文件的时候也是需要注意很多的

在启动文文件的时候我没可以直接启动也可以通过命令,这个时候就需要用到一个第三方的工具包,flask_script

我没可以把实例化的app封装到flask_script中的manage中 然后 通过这个来制定启动server

application.py文件

from flask import Flask
from flask_script import Manager #导入manage
from flask_sqlalchemy import SQLAlchemy import os class Application(Flask): def __init__(self,import_name):
super(Application,self).__init__(import_name)
self.config.from_pyfile('config/base_setting.py')#导入配置文件 if "ops_config" in os.environ: # os.environ是找到你的配置文夹中对应的配置文件
self.config.from_pyfile("config/%s_setting.py"%os.environ['ops_config']) db.init_app(self) db = SQLAlchemy() app = Application(__name__) manage = Manager(app) #把app进行封装

manage.py文件

from application import app,manage
from flask_script import Server #自定义启动服务命令 linux通过这个自定义 但是修改完成后就要要手动运行 python manage.py runserver才可以执行文件
import www
manage.add_command("runserver",Server(host = "127.0.0.1",port = 9980,use_debugger=True)) #指定启动的服务和端口 def main():
# app.run("127.0.0.1",9980,debug=True)
manage.run() if __name__ == "__main__":
try:
import sys
sys.exit(main())
except Exception as e:
import traceback #通过traceback可以把所有的错误的信息给打印出来 traceback.print_exc()
自定义启动服务命令 linux通过这个自定义  但是修改完成后就要要手动运行 python manage.py  runserver才可以执行文件
如果把app封装到manage中之后再启动服务就需要执行
python manage.py runserver

标准的Flask启动文件的更多相关文章

  1. STM32 标准库V3.5启动文件startup_stm32f10xxx.s分析

    layout: post tags: [STM32] comments: true 文章目录 layout: post tags: [STM32] comments: true 前言 分析startu ...

  2. Cortex-M3 .s启动文件分析

    1. 基本概念(CMSIS): Cortex Micro-controller Software Interface Standard,微控制器软件接口标准. 2. CMSIS标准的文件结构: a) ...

  3. 关于ARM CM3的启动文件分析

    下面以ARM Cortex_M3裸核的启动代码为例,做一下简单的分析.首先,在启动文件中完成了三项工作: 1.  堆栈以及堆的初始化 2.  定位中断向量表 3.  调用Reset Handler. ...

  4. 2.STM32启动文件

    一.概念声明 中断向量:由硬件产生的中断标识码,一般用于存放中断服务程序的跳转指令.根据硬件产生的中断号查找中断向量表来确定对应的中断向量.CM3内核有15个异常  和240个中断源.    程序的内 ...

  5. STM32启动文件深度解析

    STM32启动过程全面解析,包括启动过程的介绍.启动代码的陈列以及深入解析.相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化.ARM7/ARM9 ...

  6. Flask入门文件上传flask-uploads(八)

    1 视图传递多个参数 (1) 普通传参 : 关键字参数传递 return render_template('模板名称.html',arg1=val1,arg2=val2...) (2) 字典传参 : ...

  7. 第14章 启动文件详解—零死角玩转STM32-F429系列

    第14章     启动文件详解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...

  8. 查看tomcat启动文件都干点啥---server对象

    在上一章查看tomcat启动文件都干点啥---Catalina.java中说道了构造Server,,这次尝试着说一下Tomcat中Server的内容,首先看一下org.apache.catalina. ...

  9. C51单片机头文件和启动文件

    STARTUP.A51//启动文件. 清理RAM.设置堆栈等.即执行完start.a51后跳转到.c文件的main函数 <reg51.h>  //特殊寄存器的字节地址和位地址,sfr定义字 ...

随机推荐

  1. mysql 操作符

    1 mysql 操作符 下图表示所有操作符的执行优先级,从高到低,同一行中的操作符优先级相同,相同优先级的情况则从左到右执行 如果想改变优先级执行顺序则可以使用括号() 1.1 对比操作符 对比操作符 ...

  2. SpringMVC和dubbo简单的整合(附Demo)

    顺便记录下apache产品提供下载的网址:http://mirrors.shuosc.org/apache/ 第一步: 下载zookeeper,网址:http://mirrors.shuosc.org ...

  3. Java虚拟机(六):JVM调优工具

    工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相关问题 ...

  4. Jav实现F(n)=F(n-1)+F(n-2)+.....+F(1)+1

    private static int func(int count) {  // TODO Auto-generated method stub  int cou = 0;  if(count==1) ...

  5. Hdfs数据备份

    Hdfs数据备份 一.概述 本文的hdfs数据备份是在两个集群之间进行的,如果使用snapshot在同一个集群上做备份,如果datanode损坏或误操作清空了数据,这样的备份就无法完全保证数据安全性. ...

  6. Spring配置Quartz任务调度、及 ThreadPool 线程池

    ONE.除了引入 Spring 相关的 jar 包,还要引入 Quartz 的 jar 包 <dependency> <groupId>org.springframework& ...

  7. Chrome 谷歌如何快速实现跨域

    第一步:在你的E盘或者其他盘新建一个文件夹,命名为:E:\MyChromeDevUserData 第二步:找到你的谷歌浏览器快捷图标,鼠标右键选择属性,出现以下界面: 第三步:在目标选项的最后添加:  ...

  8. 常用算法3 - 字符串查找/模式匹配算法(BF & KMP算法)

    相信我们都有在linux下查找文本内容的经历,比如当我们使用vim查找文本文件中的某个字或者某段话时,Linux很快做出反应并给出相应结果,特别方便快捷! 那么,我们有木有想过linux是如何在浩如烟 ...

  9. webbrowser在html中写入内容并添加js

    在html中写入内容,并添加js private void btnTestJs_Click(object sender, EventArgs e) { this.webBrowser1.Navigat ...

  10. Mysql5.5升级到5.6步骤详解 小版本大版本

    http://blog.csdn.net/i_team/article/details/9935693 小版本升级,先关闭数据库,然后mv直接全部替换掉mysql目录下的bin/ ,lib/ ,sha ...