web專案038-----查詢使用者釋出過的房屋

zaaaacki發表於2021-01-03

查詢使用者釋出過的房屋

如果我想知道當前登陸的使用者發不過那些房間,這個怎麼查呢

首先我們可以在網頁中看到,我們有一個house的GHT請求

所以我們要寫/user/houses這個路由

首先你需要獲取當前使用者

@api.route("/user/houses", methods=["GET"])
@login_required
def get_user_houses():
    """
    獲取使用者釋出的房源
    :return: 釋出的房源資訊
    """
    # 獲取當前的使用者
    user_id = g.user_id    

我們怎樣去查詢呢,我麼是不是應該查詢House模型?

首先看models檔案

我們可以看到User模型中有houses,與House是外來鍵的關係

我們看House模型

我們不需要獲取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)

我們重新訪問網頁

確實發不過5個房源,證明我們寫的目前沒有問題,繼續

接下來我們需要想前端返回資料

我們開啟對應的js檔案,檢視我們需要返回什麼資料

這裡使用template,在前幾章我們說過https://blog.csdn.net/zaaaacki/article/details/111055230

後面是他要接收的資料

我們返回資料

但是我們可以從前面注意到,houses是個列表,我們要返回列表中的資訊我們該怎麼做呢

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

我們直接呼叫這個方法

@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})

 

現在都把資料給我們返回出來了

但是我們js用了那個模版引擎

但是myhouse的html檔案並沒有做出改變,程式碼都是寫死的

可以吧這三個寫死的刪掉或者註釋,因為我們可能需要對照著寫,所以先註釋

第一個不能刪,這個釋出新房源得留著

我們回顧一下那個模版怎麼用的,先寫一個script

再把

然後再把要改的東西放裡面

<ul id="houses-list" class="houses-list">
            <script>
                <li>
                    <div class="new-house">
                        <a href="/newhouse.html">釋出新房源</a>
                    </div>
                </li>
                <li>
                    <a href="/detail.html?id={{house.house_id}}&f=my">
                        <div class="house-title">
                            <h3>房屋ID:1 —— 房屋標題1</h3>
                        </div>
                        <div class="house-content">
                            <img src="/static/images/home01.jpg">
                            <div class="house-text">
                                <ul>
                                    <li>位於:西城區</li>
                                    <li>價格:¥200/晚</li>
                                    <li>釋出時間:2016-11-11 20:00:00</li>
                                </ul>
                            </div>
                        </div>
                    </a>
                </li>
            </script>

我們需要給script新增引數,這個id名字js裡面用什麼的就寫什麼的

我們還需要迴圈這個li,還要修改

我們通過each迴圈輸出,並且我們要把其中的內容修改,不能寫死,比如房屋ID:需要從後端獲取來顯示

價格:

我們執行網頁

成功!

相關文章