flask与jquery架构下的运维平台

公司目前的运维平台是使用flask+JQuery来实现的。都0202年了,准备进行一波架构更新,初步决定将前后端进行分离。

虽然对于运维平台来说功能能用就行,老的性能也不存在并发的问题;但技术总是在发展,无论对于个人还是公司来说都需要紧跟技术发展趋势。最终后台的框架会在python fastapi与go gin框架中选出,目前还在研究中。先对老的系统进行一下总结。

整个项目功能如xmind所示:

flask与jquery架构下的运维平台_第1张图片

很多功能都是根据大家的需要进行的开发。

目录结构:

flask与jquery架构下的运维平台_第2张图片

后台:

选择了flask框架,flask可以自己进行扩展。当然目前社区发展的并不是很好,如果能重来我用fastapi,^_^。

程序目录中每个目录都对应着一个blueprint,对应着网站中的一段url:比如app目录定义了blueprint并且注册到了init文件中:

先看下目录结构:

flask与jquery架构下的运维平台_第3张图片

__init__.py中定义blueprint

# Created by mark
from flask import Blueprint

apps = Blueprint('apps', __name__)
from . import views

项目主入口__init__.py注册blueprint

    # 应用管理页面
    from oms.apps import apps as apps_blueprint
    app.register_blueprint(apps_blueprint, url_prefix='/apps')

这样所有views.py里面对应的url都将是/apps开头的,比如:

@apps.route('/all_apps')
@login_required
def all_apps():
    """
    展示所有app信息
    :return:
    """
    session['menu_path'] = ['xxx', 'xxxx']
    all_apps = Apps.query.filter(xxxx).all()
    user_organize = current_user.organize_id
    return render_template('apps/all_apps.html', all_apps=all_apps, user_organize=user_organize)

对应的url就是/apps/all_apps

models.py主要是此模块数据库表信息,使用sqlalchemy数据库ORM技术

#示例
class Projects(db.Model):
    __tablename__ = 'oms_projects'
    id = db.Column(db.Integer, primary_key=True)
    # 项目名称
    project_name = db.Column(db.String(200), unique=True)
    # git库地址
    git_core = db.Column(db.Text)
    # jenkins地址
    jenkins_jobs = db.Column(db.Text)
    # 包含的服务
    services = db.Column(db.Text)
    # 包含的域名
    domains = db.Column(db.Text)
    # 项目状态
    status = db.Column(db.Boolean, default=True)
    # 描述
    desc = db.Column(db.String(200))

前端展示使用bootstrap+jquery来做,使用了jinja2模板做一些数据操作,我这边没有使用flask中的form表单,直接使用了原生的前端来做的:

整体菜单栏:

flask与jquery架构下的运维平台_第4张图片

flask与jquery架构下的运维平台_第5张图片

利用jinjia2后台可以直接将查询出的数据传给前端来渲染,不一定要传入json格式,示例:


                        {% for project in projects %}
                            
                        {% endfor %}
                        
No 项目名 描述
{{ loop.index }} {{ project.project_name }} {{ project.desc }}

以上就是每个模块的结构。

你可能感兴趣的:(python)