python flask 项目结构
1. 今天学习遇到一个问题,以前项目比较简单,所有的@app.route 都是写在一个文件app.py 中的,然后启动也是在这个文件中启动app.run .但是我今天
想写一个新的模块, 于是我新启了一个 yellowPages.py ..然后启动, 访问这个py 文件中url 路径就报404 了 。。网上找了半天,
方法1 : 在app中引入 yellowPages 就可以访问到了。。
import yellowPages 方法2 : buleprint 蓝图。。研究中: 据说试用大项目的结构
app
-templates
-a1.html
-a2.html
-views
-a1.py
-a2.py
-app.py
-manager.py
1.1 manager.py
from views.view import app,scheduler
from views.serverReq import gethttp
from views.app import admin
from views.yellowPages import yellow app.register_blueprint(admin, url_prefix='/admin',template_folder='/templates')
app.register_blueprint(yellow, url_prefix='/',template_folder='/templates') if __name__ == '__main__':
app.debug=True
scheduler.add_job(func=gethttp, id='', args=(), trigger='interval', seconds=60, replace_existing=False)
scheduler.init_app(app=app)
scheduler.start()
app.run()
1.2 app.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_apscheduler import APScheduler app = Flask('main1xx')
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@192.168.99.100/activiti_api'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 数据库
db = SQLAlchemy(app)
#定时任务
scheduler = APScheduler()
1.3 a1.py
from flask import request,render_template,Blueprint
from views.sqlconfig import Ip, AIServer,TM
import numpy as np
import datetime
from sshserver.config import paramikoclient
from sshserver.test1 import transportclient
admin = Blueprint('admin', __name__) # url_prefix='/'
client={}
@admin.route('/',methods = ['GET','POST'])
def index():
if request.method == 'POST':
filters = []
if request.values.get('ip')!='':
filters.append(AIServer.ip==request.values.get('ip'))
if request.values.get('port')!='':
filters.append(AIServer.port == request.values.get('port'))
if request.values.get('server_type')!='':
filters.append(AIServer.server_type == request.values.get('server_type'))
if request.values.get('server_addr')!='':
filters.append(AIServer.server_addr == request.values.get('server_addr'))
f = np.array(filters)
servers = AIServer.query.filter(*f).order_by("server_status").all()
else:
servers = AIServer.query.order_by("server_status").all()
return render_template('server.html',servers=servers,form = request.form)
1.4 a2.py
from flask import Blueprint, render_template
from .sqlconfig import YellowPages yellow = Blueprint('yellow', __name__) # url_prefix='/' # 网站
@yellow.route('/yellowPage', methods=['GET'])
def yellowPage():
servers = YellowPages.query.order_by("type").all()
websites = {}
t1 = []
t2 = []
t3 = []
websites['t1'] = t1
websites['t2'] = t2
websites['t3'] = t3
for s in servers:
website = {'id': s.id, 'name': s.name, 'url': s.url}
websites['t' + str(s.type)].append(website)
return render_template('yellowPages.html', websites=websites)
2. 关于flask templates 路径问题,默认是在.py 的同级目录templates下。。 如果想以项目路径为启动可以
app = Flask('x') 其中x 可以是任意值。。
python flask 项目结构的更多相关文章
- 一个比较良好的flask项目结构
一个比较良好的flask项目结构 project/ app/ # 整个程序的包目录 static/ # 静态资源文件 js/ ...
- flask项目结构(四)使用sqlalchemy和alembic
简介 其实我不是啥正经人,错了,不是啥正经程序员,所能想到的估计也就码农一级吧,高级程序员,搞什么算法,什么人工智能,大数据计算…………离我还太遥远. 但是这并不妨碍我继续学习,继续写垃圾小程序. 反 ...
- flask项目结构(三)使用蓝图
简介: Flask中的蓝图旨在针对这些情况: 把一个应用分解成一系列的蓝图.对于大型的应用是理想化的:一个项目能实例化一个应用, 初始化一些扩展,以及注册一系列的蓝图. 以一个 URL 前缀和/或子域 ...
- python的项目结构
项目结构 知识点 创建项目,编写 __init__ 文件 使用 setuptools 模块,编写 setup.py 和 MANIFEST.in 文件 创建源文件的发布版本 项目注册&上传到 P ...
- 使用Nginx+Uwsgi部署Python Flask项目
第一次用Flask做Web(也是第一次用Python做Web),在部署的时候遇到了不少问题,现在将过程就下来,供在这方面也有疑惑的人参考.(PS:使用Apache+mod_wsgi部署模式的可以参考另 ...
- Python Flask项目步骤
构建flask项目步骤 步骤一:构建基础项目框架 创建manage.py文件 from flask import Flask app = Flask(__name__) ""&qu ...
- flask项目结构(二)创建flask,同步docker
简介: 建立flask容易,那么部署就比较麻烦了,配这个,配那个,更新………… 所以我从构建,就考虑部署的问题,使用docker部署. 程序都打包进docker,本博客有相关文章. pycharn直接 ...
- flask项目结构(一)mariadb
简介: 本文主要是根据自己所学,创建一个flask项目,使用sqlalchemy,alembic,mariadb,bootstrap,APScheduler,selenium,request…………技 ...
- flask项目结构(五)使用数据库
简介: 基础搭建好了,开始读写数据库吧.毕竟写的程序,也没什么高深的,就是CRUD,中文说是增删改查. 一:在数据库中增加测试数据. 在项目根目录建立init_test.py from config ...
随机推荐
- python对ftp进行操作
背景:需要对ftp进行操作,涉及上传和下载操作 from ftplib import FTP ftp = FTP(host=“ftp的hostname",user=‘登录用户名', pa ...
- 八 xml模块
xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的 ...
- chattr 和 lsattr 命令介绍---案例:修改passwd文件
chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多 功能不能实现.同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持. ...
- ubuntu 印象笔记
1. 印象笔记剪裁,直接浏览器上百度搜索,下载浏览器插件,登陆即可.(不过,我遇到个问题,浏览器登陆的服务器貌似是国际版的,与pc上的服务器不同,也没有成功转换过来.两账户相互独立.) 2. 印象笔记 ...
- 生成二维码的JAVA
不多说,上代码 package tcc; import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.Buffered ...
- vcenter或workstation12导入ovf出错:硬件系列vmx 14不受支持
原因是因为导出ovf的虚拟机版本太高. 两个方法,一个强制,一个推荐. 强制 1. 打开ovf后缀文件,把<vssd:VirtualSystemType>vmx-14</vssd:V ...
- MB_DOCUMENT_BADI调试(Update Debug)
Update Module函数,主要用语对话或报表中实现同步和异步更新数据库操作,需要单独调用函数实现更新数据库表,但又要求对程序的运行不产生影响(更新成功与否不影响主程序的正常执行) 几个操作,要么 ...
- linux命令学习之:rm
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉.对于链接文件,只是删除整个链接文件,而原有文件保持不变. 注意:使用rm命令要格外小心.因为一旦 ...
- 31-java中知识总结:list, set, map, stack, queue
import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Lin ...
- delete,truncate 和 delete之间的区别
1.首先看下语法定义: drop table_name truncate table_name delete table_name [where column_name = value] 2.各个删除 ...