美文网首页
Flask 分离开发

Flask 分离开发

作者: sunshaoping | 来源:发表于2018-09-28 16:36 被阅读0次

    flask框架在构建大中型项目时,需要将模型和路由,视图处理函数分离开,这样模块化开发,减少主文件的代码量
    目录框架

    celue4.0
    |--celue           # 策略模块
      |----celue.py     # 策略函数
      |----api.py         # api函数
    |--Log            # 日志文件
    |--models       # 数据模型
      |----static          # 静态文件
      |----template    # 网页文件
    |--tools           # 工具模块
      |----redis         # redis类
      |----tools         # 工具类(包括加解密方法)
    |--views          # 视图模块
      |----admin.py  # 管理员模块
      |----mc_user.py # 移动端模块
      |----pc_user.py  # 电脑端模块
    |--mangage.py  # 启动文件(app.py)
    

    正常启动manage.py,启动项目
    1.manage.py 文件(app.py)

    # 应用启动文件
    from models.models import db,create_app # 导入数据模型
    from views.admin import *   # admin模块
    from tools.redis_return import redis_ret    # redis模块
    from tools.tools import checkMobile     # 判断移动端与PC端模块
    from flask import redirect,render_template,session  # flask中需要的模块
    from views.admin import admin
    from views.MC_user import *
    from views.PC_user import *
    
    
    app = create_app()
    r = redis_ret()
    
    
    # 根路由
    @app.route("/")
    def index():
        args = request.args.get("args", None)   # 获取请求中的args参数
        print(args)
        session["user"] = User.query.filter_by(uid=str(args)).first().id
        if checkMobile(request):  # 判断请求是手机端还是PC端
            return redirect("mc")   # 移动端
        else:
            return redirect("pc")   # PC端
    
    # Blueprint对象的注册和路由(类似主路由)
    app.register_blueprint(admin,url_prefix="/admin")   # 管理员路由
    app.register_blueprint(mc_user,url_prefix="/mc")    # 移动端路由
    app.register_blueprint(pc_user,url_prefix="/pc")    # PC端路由
    
    
    if __name__ == '__main__':
        app.run(debug=True, host="0.0.0.0",port=5000)
    

    2.子路由视图处理函数

    from flask import Blueprint,session,render_template,request,redirect
    from modes.modes import *
    from tools.redis_return import redis_ret
    import time
    
    # 实例化redis
    r=redis_ret()
    # 注册子路由
    pc_user = Blueprint('pc_user', __name__)
    
    # 主页(子路由注册视图)
    @pc_user.route("/")
    def index():
            exc_list = Exchange.query.filter_by(user_id=session['user']).all()
            return render_template('pc/MCU.html',bot=bot_list,exc=exc_list)
    

    3.models文件

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    import datetime
    
    db = SQLAlchemy()
    
    #用户
    class User(db.Model):
        __tablename__ = 'user'
        id = db.Column(db.Integer, primary_key=True)
        uid = db.Column(db.String(80), unique=True)
        locked = db.Column(db.String(80))
        level = db.Column(db.String(80))
        date = db.Column(db.DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now)
    
    def create_app():
        app=Flask(__name__)
        app.secret_key='lianshangkeji'  # 设置secret_key,不设置的话可能会提示secret_key没设置
        app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@127.0.0.1:3306/ccc'    # 设置数据库连接
        db.init_app(app)
        db.create_all(app=app)
        return app
    

    4.页面index.html

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    {% if error %}
        <h2>{{error}}</h2>
    {% else %}
        
    {% endif %}
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:Flask 分离开发

          本文链接:https://www.haomeiwen.com/subject/flfggftx.html