zoukankan      html  css  js  c++  java
  • 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: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 可以是任意值。。 
  • 相关阅读:
    第三发
    第二发
    第一发
    要看的算法
    haxe坑
    TCP/IP协议三次握手与四次握手流程解析(转)
    Android动态类生成预加载-dexmaker使用
    Java中ArrayList 、LinkList区别
    Java解析YAML和Android解析YAML
    Java sax、dom、pull解析xml
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/9829714.html
Copyright © 2011-2022 走看看