Flask 分离开发

2018-09-28  本文已影响0人  sunshaoping

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>
上一篇下一篇

猜你喜欢

热点阅读