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中需要加入请求的页码和开启分页功能如下:
在后台需要得到分页的页码和当前页,如下:
