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='1', 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 可以是任意值。。