毕业设计 网站建设,打广告在哪里打最有效,微餐饮建站费用,建网站 外贸Flask是一款MVC框架#xff0c;主要是从模型、视图、模板三个方面对Flask框架有一个全面的认识#xff0c;通过完成作者-读书功能#xff0c;先来熟悉Flask框架的完整使用步骤。 操作步骤为#xff1a; 1.创建项目2.配置数据库3.定义模型类4.定义视图并配置URL 5.定义模板… Flask是一款MVC框架主要是从模型、视图、模板三个方面对Flask框架有一个全面的认识通过完成作者-读书功能先来熟悉Flask框架的完整使用步骤。 操作步骤为 1.创建项目2.配置数据库3.定义模型类4.定义视图并配置URL 5.定义模板 前面说了创建项目的流程今天主要从配置到用户主要根据思维导图来说先看思维导图 主要有以下几个方面1.房屋新建house_views.py创建蓝图并注册需要完成的功能如下 myhouse.html我的房源newhouse.html发布新房源index.html首页search.html搜索结果页detail.html房屋详细页 2.订单 新建booking_views.py创建蓝图并注册订单模块主要包括的功能如下 booking.html预订页面orders.html我的订单作为房客的订单lorders.html客户订单作为房东的订单 主要根据思维导图代码加注释的方法来说明1.房屋 新建house_views.py #codingutf-8
from flask import Blueprint, jsonify
from flask import request
from flask import sessionfrom qiniu_sdk import put_qiniu
from status_code import REThouse_blueprintBlueprint(house,__name__)from flask import current_app
from flask import jsonfrom models import Area, Facility, HouseImage, House, User, Order#获取地区信息并进行缓存
def get_areas():area_dict_listcurrent_app.redis.get(area_list)if not area_dict_list:area_listArea.query.all()arear_dict_list[area.to_dict() for area in area_list]current_app.redis.set(area_list,json.dumps(area_dict_list))else:#存储到redis后会被转换成字符串所以取出来后需要转换area_dict_listjson.loads(area_dict_list)return area_dict_list#获取设施信息并缓存
def get_facilities():facility_dict_listcurrent_app.redis.get(facility_list)if not facility_dict_list:facility_listFacility.query.all()facility_dict_list[facility.to_dict() for facility in facility_list]current_app.redis.set(facility_list,json.dumps(facility_dict_list))else:facility_dict_listjson.loads(facility_dict_list)return facility_dict_listhouse_blueprint.route(/area_facility,methods[GET])
def newhouse():#查询地址kkkkarea_dict_listget_areas()#查询设施facility_dict_listget_facilities()#构造结果并返回return jsonify(areaarea_dict_list,faciclityfacility_dict_list)#保存房屋图片
house_blueprint.route(/newhouse_image)
def newhouse_image():#接受房屋编号house_idrequest.form.get(house_id)#接受图片信息f1request.files.get(house_image)#保存到七牛云上urlput_qiniu(f1)#保存图片对象imageHouseImage()image.house_idhouse_idimage.urlurlimage.add_update()#房屋的默认图片houseHouse.query.get(house_id)if not house.index_image_url:house.index_image_urlurlhouse.add_update()#返回图片信息return jsonify(codeRET.OK,urlcurrent_app.config.get(QINIU_URL)url)#保存信息
house_blueprint.route(/,methods[POST])
def newhouse_save():#接收数据paramsrequest.form.to_dict()facility_idsrequest.form.getlist(facility)#创建对象并保存house House()house.user_id session[user_id]house.area_id params.get(area_id)house.title params.get(title)house.price params.get(price)house.address params.get(address)house.room_count params.get(room_count)house.acreage params.get(acreage)house.beds params.get(beds)house.unit params.get(unit)house.capacity params.get(capacity)house.deposit params.get(deposit)house.min_days params.get(min_days)house.max_days params.get(max_days)#根据设施的编号查询设施对象if facility_ids:facility_listFacility.query.filter(Facility.id.iin_(facility_ids)).all()house.facilitiesfacility_listhouse.add_update()#返回结果return jsonify(codeRET.OK,house_idhouse.id)#我的房屋
house_blueprint.route(/,methods[GET])
def myhouse():user_idsession[user_id]userUser.query.get(user_id)if user.id_name:#已经完成实名认证查询当前用户的房屋信息house_listHouse.query.filter(House.user_iduser_id).order_by(House.id.desc())house_list2[]for house in house_list:house_list2.append(house.to_dict())return jsonify(codeRET.OK,hlisthouse_list2)else:#没有完成实名认证return jsonify(codeRET.USERERR)#查询房屋与设施如果是自己的则查询不出来目的就是不让自己预定自己的房子
house_blueprint.route(/init:id,methods[GET])
def house_detail(id):#查询房屋信息houseHouse.query.get(id)#查询设施信息facility_listget_facilities()#判断当前房屋是不是自己booking1if user_id in session:if house.user_idsession[user_id]:booking0return jsonify(househouse.to_full_dict(),facility_listfacility_list,bookingbooking)#搜索房屋
house_blueprint.route(/search,methods[GET])
def search():#接收参数dictrequest.argsarea_idint(dict.get(aid))begin_datedict.get(sd)end_datedict.get(ed)sort_keydict.get(sk)#满足地区条件hlistHouse.query.filter(House.area_idarea_id)#不能查询自己发布的房源排除当前用户发布的房屋if user_id in session:hlisthlist.filter(House.user_id!(session[user_id]))#满足事件条件当订单完成后再完成时间限制order_listOrder.query.filter(Order.status!REJECTED)#情况一# order_list1Order.query.filter(Order.begin_datebegin_date,Order.end_dateend_date)#情况二order_list2Order.query.filter(Order.begin_datebegin_date,Order.end_dateend_date)#情况三order_list3Order.query.filter(Order.end_datebegin_date,Order.end_dateend_date)#情况四order_list4Order.query.filter(Order.begin_datebegin_date,Order.begin_dateend_date)#获取订单中的房屋编号house_ids[order.house_id for order in order_list2]for order in order_list3:house_ids.append(order.house_id)for order in order_list4:if order.house_id not in house_ids:house_ids.append(order.house_id)hlisthlist.filter(House.id.notin_(house_ids))#排序规则默认根据最新排列sortHouse.id.desc()if sort_keybooking:sortHouse.order_count.desc()elif sort_keyprice-inc:sortHouse.price.asc()elif sort_keyprice-des:sortHouse.price.desc()hlisthlist.order_by(sort)hlist2[]for house in hlist:hlist2.append(house.to_dict())#获取地区信息if request.args.get(area,0)1:alistget_areas()else:alist[]return jsonify(hlisthlist2,alistalist) 订单 新建booking_views.py # codingutf-8
from flask import Blueprint,jsonify,request,session
order_blueprintBlueprint(order,__name__)
from datetime import datetime
from models import House,Order
from status_code import RET,ret_map
from my_decorators import is_login
import logging#查询指定编号的房屋信息
order_blueprint.route(/house/int:id)
def booking_house(id):houseHouse.query.get(id)return jsonify(househouse.to_dict())#创建订单
is_login
order_blueprint.route(/,methods[POST])
def booking():#接收参数dictrequest.formhouse_idint(dict.get(house_id))start_datedatetime.strptime(dict.get(start_date),%Y-%m-%d)end_datedatetime.strptime(dict.get(end_date),%Y-%m-%d)#验证有效性if not all([house_id,start_date,end_date]):return jsonify(codeRET.PARAMERR,msgret_map[RET.PARAMERR])if start_dateend_date:return jsonify(codeRET.PARAMERR,msgret_map[RET.PARAMERR])#查询房屋对象try:houseHouse.query.get(house_id)except:logging.error(u下订单-查询房屋出错房屋编号%d%house_id)return jsonify(codeRET.DBERR,msgret_map[RET.DBERR])#创建订单对象orderOrder()order.user_idsession[user_id]order.house_idhouse_idorder.begin_datestart_dateorder.end_dateend_dateorder.days(end_date-start_date).days1order.house_pricehouse.priceorder.amountorder.days*order.house_pricetry:order.add_update()except:logging.error(u下订单-出错)return jsonify(codeRET.DBERR,msgret_map[RET.DBERR])#返回信息return jsonify(codeRET.OK)#作为租客查询订单
is_login#
order_blueprint.route(/,methods[GET])
def orders():uidsession[user_id]order_listOrder.query.filter(Order.user_iduid).order_by(Order.id.desc())order_list2[order.to_dict() for order in order_list]return jsonify(olistorder_list2)#作为房东查询订单
is_login
order_blueprint.route(/fd,methods[GET])
def lorders():uidsession[user_id]#查询当前用户的所有房屋编号hlistHouse.query.filter(House.user_iduid)hid_list[house.id for house in hlist]#根据房屋编号查找订单order_listOrder.query.filter(Order.house_id.in_(hid_list)).order_by(Order.id.desc())#构造结果olist[order.to_dict() for order in order_list]return jsonify(olistolist)#修改状态
order_blueprint.route(/int:id,methods[PUT])
def status(id):#接收参数状态statusrequest.form.get(status)#查找订单对象orderOrder.query.get(id)#修改order.statusstatus#保存order.add_update()return jsonify(codeRET.OK) 完整代码https://gitee.com/itpython/ihome/tree/bj14/ihome