flask+layui编写后端管理系统


项目结构如下:

 model.py如下,需要在数据库里创建模型

import json

from sqlalchemy import Column,Integer,String,UniqueConstraint,Index
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
import config
from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine(config.SQLALCHEMY_DATABASE_URI)
Base = declarative_base()


class User(Base):
    __tablename__ = 'users'
    id = Column(Integer,primary_key=True,autoincrement=True)
    name = Column(String(32))
    age = Column(Integer)
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        info = {
            "id": self.id,
            "name": self.name,
            "age": self.age
        }
        return json.dumps(info)

# Base.metadata.create_all(engine)
# Base.metadata.drop_all(engine)
def query():
    sm = sessionmaker(bind=engine)
    session = sm()
    all = session.query(User).all()
    return all

app.py文件内容如下:

import json
from flask_paginate import Pagination,get_page_parameter,request
from flask import Flask,render_template
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
import config
from model.UserModel import User,query
        
    

@app.route('/')
def hello_world():
    return render_template("index.html")
@app.route('/list')
def ShowData():
    pageNum = int(request.args.get("pageNum"))
    pageSize = int(request.args.get("pageSize"))
    data_list = []
    all = query()
    for res in all:
        datas = {
            "id": res.id,
            "name": res.name,
            "age": res.age
        }
        data_list.append(datas)
    info = {"code": 0, "message": "OK", "total": len(data_list), "data": data_list[(pageNum - 1) * pageSize:pageNum * pageSize]}
    print(info)
    return info


if __name__ == '__main__':
    app.run(debug=True,)
    # db.create_all()

数据库配置config.py如下:

host = 'xxx.xxx.xxx.xxx'
port = 3306
username = 'root'
password = 'root'
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(username=username,password=password, host=host,port=port, db='testdb')
SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMY_ECHO = True

index.html内容如下:




    
    Title
    
    







最终效果图如下:

分页功能 

需要注意的是如果想实现分页在index.html中需要加入请求的页码和开启分页功能如下:

在后台需要得到分页的页码和当前页,如下: