Flask爱家租房--发布新房源(保存房屋基本信息)
生活随笔
收集整理的這篇文章主要介紹了
Flask爱家租房--发布新房源(保存房屋基本信息)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
0.頁面展示效果
1.后端代碼
@api.route("/houses/info", methods=["POST"]) @login_required def save_house_info():"""保存房屋的基本信息前端發送過來的json數據{"title":"","price":"","area_id":"1","address":"","room_count":"","acreage":"","unit":"","capacity":"","beds":"","deposit":"","min_days":"","max_days":"","facility":["7","8"]}"""# 獲取數據user_id = g.user_idhouse_data = request.get_json()title = house_data.get("title") # 房屋名稱標題price = house_data.get("price") # 房屋單價area_id = house_data.get("area_id") # 房屋所屬城區的編號address = house_data.get("address") # 房屋地址room_count = house_data.get("room_count") # 房屋包含的房間數目acreage = house_data.get("acreage") # 房屋面積unit = house_data.get("unit") # 房屋布局(幾室幾廳)capacity = house_data.get("capacity") # 房屋容納人數beds = house_data.get("beds") # 房屋臥床數目deposit = house_data.get("deposit") # 押金min_days = house_data.get("min_days") # 最小入住天數max_days = house_data.get("max_days") # 最大入住天數# 校驗參數if not all([title, price, area_id, address, room_count, acreage, unit, capacity, beds, deposit, min_days, max_days]):return jsonify(errno=RET.PARAMERR, errmsg="參數不完整")# 判斷金額是否正確try:price = int(float(price) * 100)deposit = int(float(deposit) * 100)except Exception as e:current_app.logger.error(e)return jsonify(errno=RET.PARAMERR, errmsg="參數錯誤")# 判斷城區id是否存在try:area = Area.query.get(area_id)except Exception as e:current_app.logger.error(e)return jsonify(errno=RET.DBERR, errmsg="數據庫異常")if area is None:return jsonify(errno=RET.NODATA, errmsg="城區信息有誤")# 保存房屋信息house = House(user_id=user_id,area_id=area_id,title=title,price=price,address=address,room_count=room_count,acreage=acreage,unit=unit,capacity=capacity,beds=beds,deposit=deposit,min_days=min_days,max_days=max_days)# 處理房屋的設施信息facility_ids = house_data.get("facility")# 如果用戶勾選了設施信息,再保存數據庫if facility_ids:# ["7","8"]try:# select * from ih_facility_info where id in []facilities = Facility.query.filter(Facility.id.in_(facility_ids)).all()except Exception as e:current_app.logger.error(e)return jsonify(errno=RET.DBERR, errmsg="數據庫異常")if facilities:# 表示有合法的設施數據# 保存設施數據house.facilities = facilitiestry:db.session.add(house)db.session.commit()except Exception as e:current_app.logger.error(e)db.session.rollback()return jsonify(errno=RET.DBERR, errmsg="保存數據失敗")# 保存數據成功return jsonify(errno=RET.OK, errmsg="OK", data={"house_id": house.id})2.前端html代碼
<!DOCTYPE html> <html> <head> <meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><title>愛家-發布新房源</title><link href="/static/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet"><link href="/static/plugins/font-awesome/css/font-awesome.min.css" rel="stylesheet"><link href="/static/css/reset.css" rel="stylesheet"><link href="/static/plugins/bootstrap-datepicker/css/bootstrap-datepicker.min.css" rel="stylesheet"><link href="/static/css/ihome/main.css" rel="stylesheet"><link href="/static/css/ihome/newhouse.css" rel="stylesheet"> </head> <body><div class="container"><div class="top-bar"><div class="nav-bar"><h3 class="page-title">發布新房源</h3><a class="nav-btn fl" href="/myhouse.html"><span><i class="fa fa-angle-left fa-2x"></i></span></a></div></div><div class="houses-con"><ul class="houses-list"><form id="form-house-info"><li><div class="house-title"><h3>基本信息</h3></div><div class="house-content"><div class="form-group"><label for="house-title">房屋標題</label><input type="text" class="form-control" name="title" id="house-title" required></div><div class="form-group"><label for="house-price">每晚價格</label><input type="number" class="form-control" name="price" id="house-price" required></div><div class="form-group"><label for="area-id">所在城區</label><select class="form-control" id="area-id" name="area_id"></select><script type="text/html" id="areas-tmpl">{{ each areas as area}}<option value="{{ area.aid }}">{{ area.aname }}</option>{{ /each }}</script></div><div class="form-group"><label for="house-address">詳細地址</label><textarea class="form-control" name="address" id="house-address" required></textarea></div> </div></li><li><div class="house-title"><h3>詳細信息</h3></div><div class="house-content"><div class="form-group"><label for="house-room-count">出租房間數目</label><input type="number" class="form-control" name="room_count" id="house-room-count" required></div><div class="form-group"><label for="house-acreage">房屋面積</label><input type="number" class="form-control" name="acreage" id="house-acreage" required></div><div class="form-group"><label for="house-unit">戶型描述</label><input type="text" class="form-control" name="unit" id="house-unit" placeholder="如:三室兩廳兩衛" required></div><div class="form-group"><label for="house-capacity">宜住人數</label><input type="number" class="form-control" name="capacity" id="house-capacity" required></div><div class="form-group"><label for="house-beds">臥床配置</label><input type="text" class="form-control" name="beds" id="house-beds" placeholder="如:雙人床:2x1.8x1張 1.5x2x2張" required></div> <div class="form-group"><label for="house-deposit">押金數額</label><input type="number" class="form-control" name="deposit" id="house-deposit" required></div><div class="form-group"><label for="house-min-days">最少入住天數</label><input type="number" class="form-control" name="min_days" id="house-min-days" required></div><div class="form-group"><label for="house-max-days">最多入住天數</label><input type="number" class="form-control" name="max_days" id="house-max-days" placeholder="0表示無限制" required></div></div></li><li><div class="house-title"><h3>配套設施</h3></div><div class="house-content"><ul class="house-facility-list clearfix"><li><div class="checkbox"><label><input type="checkbox" name="facility" value="1">無線網絡</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="2">熱水淋浴</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="3">空調</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="4">暖氣</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="5">允許吸煙</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="6">飲水設備</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="7">牙具</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="8">香皂</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="9">拖鞋</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="10">手紙</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="11">毛巾</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="12">沐浴露、洗發露</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="13">冰箱</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="14">洗衣機</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="15">電梯</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="16">允許做飯</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="17">允許帶寵物</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="18">允許聚會</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="19">門禁系統</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="20">停車位</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="21">有線網絡</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="22">電視</label></div></li><li><div class="checkbox"><label><input type="checkbox" name="facility" value="23">浴缸</label></div></li></ul></div></li><input type="submit" class="btn btn-success btn-commit" value="發布房源信息"><div class="error-msg text-center"><i class="fa fa-exclamation-circle"></i>請將全部信息填寫完整后再提交</div></form><form id="form-house-image" action="/api/house/image" method="post" enctype="multipart/form-data"><input type="hidden" name="house_id" id="house-id" value=""><li><div class="house-title"><h3>添加圖片</h3></div><div class="house-content"><div class="house-image-cons"></div><div class="form-group"><label for="house-image">選擇圖片</label><input type="file" accept="image/*" name="house_image" id="house-image"></div><input type="submit" class="btn btn-success" value="上傳"></div></li></form></ul></div><div class="popup_con"><div class="popup"><p><i class="fa fa-spinner fa-spin fa-3x fa-fw"></i></p></div><div class="mask"></div></div><div class="footer"><p><span><i class="fa fa-copyright"></i></span>愛家租房 享受家的溫馨</p></div> </div><script src="/static/js/jquery.min.js"></script><script src="/static/js/jquery.form.min.js"></script><script src="/static/js/template.js"></script><script src="/static/plugins/bootstrap/js/bootstrap.min.js"></script><script src="/static/plugins/bootstrap-datepicker/js/bootstrap-datepicker.min.js"></script><script src="/static/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js"></script><script src="/static/js/ihome/newhouse.js"></script> </body> </html>3.前端js代碼
$("#form-house-info").submit(function (e) {e.preventDefault();// 處理表單數據var data = {};$("#form-house-info").serializeArray().map(function(x) { data[x.name]=x.value });// 收集設置id信息var facility = [];$(":checked[name=facility]").each(function(index, x){facility[index] = $(x).val()});data.facility = facility;// 向后端發送請求$.ajax({url: "/api/v1.0/houses/info",type: "post",contentType: "application/json",data: JSON.stringify(data),dataType: "json",headers: {"X-CSRFToken": getCookie("csrf_token")},success: function (resp) {if (resp.errno == "4101") {// 用戶未登錄location.href = "/login.html";} else if (resp.errno == "0") {// 隱藏基本信息表單$("#form-house-info").hide();// 顯示圖片表單$("#form-house-image").show();// 設置圖片表單中的house_id$("#house-id").val(resp.data.house_id);} else {alert(resp.errmsg);}}})}); 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Flask爱家租房--发布新房源(保存房屋基本信息)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 器件IC封装大全
- 下一篇: linux制作iso启动盘