python flask项目
models.py内容:
# import app as app_object (从app项目中导入下面这个变量,方便以后统一修改域名)
# SERVER_ROOT = 'http://127.0.0.1:5000'
# 轮播图
class Banner(db.Model):
id = db.Column(db.Integer, primary_key=True)
# 名字
name = db.Column(db.String(50))
# 点击后 链接地址
link = db.Column(db.String(255))
# 轮播图的地址
image_url = db.Column(db.String(255))
# 状态
status = db.Column(db.Integer)
# 返回字典:
def obj_dict(self):
'''
:return: {属性:属性值}
'''
# __dict__会返回对象所有属性和属性值组成的字典
a = self.__dict__
obj_dict = copy.deepcopy(a)
# 注意,不能直接导入app,会和上面定义的app冲突,这里更换名字为app_object
# 下面是根据前台需要进行数据的修改调整
obj_dict['image_url'] = app_object.SERVER_ROOT + obj_dict['image_url']
# 删除__dict__返回的多余的属性(可自行打印查看哪些多余)
obj_dict.pop('_sa_instance_state')
# 返回字典: {属性:属性值}
return obj_dict
app项目中的__init__文件:
# 实例化对象
# __name__ 表示当前模块的名称,就是最外面项目名称app
app = Flask(__name__)
# 开启debug模式
app.debug = True
# 注册视图
from app.admin import admin as admin_blueprint
from app.api import api as api_blueprint
app.register_blueprint(api_blueprint,url_prefix="/api")
app.register_blueprint(admin_blueprint)
# 定义路径(app路径)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
SERVER_ROOT = 'http://127.0.0.1:5000'
api/views.py文件:
# 定义小程序首页数据的api
@api.route('/index/index')
def index_index():
# data的banner数据组件列表套字典的格式;
banner = []
for i in Banner.query.all():
j = i.obj_dict()
banner.append(j)
# data的channel数据组件列表套字典的格式;
# 获取首页的5个分类导航
channel = []
for i in Category.query.filter_by(level=1).limit(5):
j = i.obj_dict()
channel.append(j)
# 获取所有的一级分类
categoryList = []
for e in Category.query.filter_by(level=1):
es = e.obj_dict()
# 获取当前一级分类下所有子类
ee = Category.query.filter_by(parentid=e.id).all()
ids = []
for x in ee:
ids.append(x.id)
# 获取当前子类下前7个商品
gs = Goods.query.filter(Goods.cate_id.in_(ids)).all()[:7]
goodsList = []
for eee in gs:
g = eee.obj_dict()
goodsList.append(g)
# 追加当前类下的商品数据
es['goodsList'] = goodsList
categoryList.append(es)
data = {
"errno":0,
"errmsg":"",
"data":{
"banner":banner,
"channel": channel,
"categoryList": categoryList
}
}
return jsonify(data)