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='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:[email protected]/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 可以是任意值。。 

猜你喜欢

转载自www.cnblogs.com/zhangchenglzhao/p/9829714.html