web项目038-----查询用户发布过的房屋

查询用户发布过的房屋

如果我想知道当前登陆的用户发不过那些房间,这个怎么查呢

首先我们可以在网页中看到,我们有一个house的GHT请求

所以我们要写/user/houses这个路由

首先你需要获取当前用户

@api.route("/user/houses", methods=["GET"])
@login_required
def get_user_houses():
    """
    获取用户发布的房源
    :return: 发布的房源信息
    """
    # 获取当前的用户
    user_id = g.user_id    

我们怎样去查找呢,我么是不是应该查询House模型?

首先看models文件

web项目038-----查询用户发布过的房屋_第1张图片

我们可以看到User模型中有houses,与House是外键的关系

我们看House模型

web项目038-----查询用户发布过的房屋_第2张图片

我们不需要获取user_id,我们需要根据用户来查询这个用户发布了那些房间

这是我们之前定一个的g对象,获取的就是用户的id

所以我们直接在User模型中用过id查找信息,在通过查找的信息中获取house的信息

    try:
        user = User.query.get(user_id)
        houses = user.houses
    except Exception as e:
        logging.error(e)
        return jsonify(errno=RET.DBERR, errmsg='获取数据失败')
    print(houses)

我们重新访问网页

web项目038-----查询用户发布过的房屋_第3张图片确实发不过5个房源,证明我们写的目前没有问题,继续

接下来我们需要想前端返回数据

我们打开对应的js文件,查看我们需要返回什么数据

这里使用template,在前几章我们说过https://blog.csdn.net/zaaaacki/article/details/111055230

后面是他要接收的数据

我们返回数据

但是我们可以从前面注意到,houses是个列表,我们要返回列表中的信息我们该怎么做呢

我们在House模型中可以看到他里面有一些方法

web项目038-----查询用户发布过的房屋_第4张图片

我们直接调用这个方法

@api.route("/user/houses", methods=["GET"])
@login_required
def get_user_houses():
    """
    获取用户发布的房源
    :return: 发布的房源信息
    """
    # 获取当前的用户
    user_id = g.user_id

    try:
        user = User.query.get(user_id)
        houses = user.houses
    except Exception as e:
        logging.error(e)
        return jsonify(errno=RET.DBERR, errmsg='获取数据失败')

    # 将查询到的房屋信息转换成字典放到列表中
    houses_list = []
    if houses:
        for house in houses:
            houses_list.append(house.to_basic_dict())

    return jsonify(errno=RET.OK, errmsg='OK', data={"houses": houses_list})

web项目038-----查询用户发布过的房屋_第5张图片 

现在都把数据给我们返回出来了

但是我们js用了那个模版引擎

但是myhouse的html文件并没有做出改变,代码都是写死的

web项目038-----查询用户发布过的房屋_第6张图片

可以吧这三个写死的删掉或者注释,因为我们可能需要对照着写,所以先注释

第一个不能删,web项目038-----查询用户发布过的房屋_第7张图片这个发布新房源得留着

我们回顾一下那个模版怎么用的,先写一个script

再把

web项目038-----查询用户发布过的房屋_第8张图片

然后再把要改的东西放里面

我们需要给script添加参数,这个id名字js里面用什么的就写什么的

我们还需要循环这个li,还要修改

web项目038-----查询用户发布过的房屋_第9张图片

我们通过each循环输出,并且我们要把其中的内容修改,不能写死,比如房屋ID:需要从后端获取来显示

web项目038-----查询用户发布过的房屋_第10张图片

价格:

我们运行网页

web项目038-----查询用户发布过的房屋_第11张图片成功!

你可能感兴趣的:(web项目,python,flask)