美文网首页web服务器
爱家(租房系统)---- 发布房源信息

爱家(租房系统)---- 发布房源信息

作者: GHope | 来源:发表于2018-10-24 20:41 被阅读27次

    关于用户的相关业务逻辑已经基本完成,接下来是关于房屋的业务逻辑。所以此时就需要在项目中的app文件中创建house_views.py文件来管理房屋相关逻辑。关于蓝图的绑定此时在manager.py(启动文件)中进行一个简单的引入及绑定即可。

    对用户是否实名的检测

    前端提起的用户实名证判断请求:

    //获取用户信息,判断是否进行过实名认证
    $.get('/house/my_auth/',function (data) {
        if(data.code== '200'){
            //已经完成实名认证
            $('#houses-list').show();
            var html=template('house_list',{hlist:data.hlist});
            $('#houses-list').append(html);
        }else{
            //未实名认证
            $('#auth-warn').show();
        }
    });
    

    后台接收请求做出判断并返回相应数据:

    house_blueprint = Blueprint('house', __name__)
    
    
    @house_blueprint.route('/my_house/', methods=['GET', 'POST'])
    def my_house():
        if request.method == 'GET':
            return render_template('myhouse.html')
    
    
    @house_blueprint.route('/my_auth/')
    def my_auth():
        """
        验证当前用户是否完成实名认证
        """
        user_id = session['user_id']
        user = User.query.get(user_id)
        if user.id_name:
            # 已经完成实名认证,查询当前用户的房屋信息
            house_list = House.query.filter(House.user_id == user_id).order_by(House.id.desc())
            house_list2 = []
            for house in house_list:
                house_list2.append(house.to_dict())
            return jsonify(code='200', hlist=house_list2)
        else:
            # 没有完成实名认证
            return jsonify(status_code.MYHOUSE_USER_IS_NOT_AUTH)
    

    获取数据库中房屋信息的设施及地区信息

    对后台发起房屋设施和所处地区的信息请求,同时置空页面中关于房屋设施和地区的信息,遍历后台返回的数据,一一填制到对应模块中即完成了该项功能。

    //查询地区、设施信息
        $.get('/house/area_facility/',function (data) {
            //地区
            var area_html = ''
            for(var i=0; i<data.area.length; i++){
                area_html += '<option value="' + data.area[i].id + '">' + data.area[i].name + '</option>'
            }
            $('#area-id').html(area_html);
            //设施
            var facility_html_list = ''
            for(var i=0; i<data.facility.length; i++){
                var facility_html = '<li><div class="checkbox"><label><input type="checkbox" name="facility"'
                facility_html += ' value="' + data.facility[i].id + '">' + data.facility[i].name
                facility_html += '</label></div></li>'
    
                facility_html_list += facility_html
            }
            $('.house-facility-list').html(facility_html_list);
        }); 
    

    接收前端提出的请求,查询数据库中关于房屋设施及所处地区的数据,生成列表后返回给前端。

    @house_blueprint.route('/area_facility/')
    def area_facility():
        # 查询地址
        area_list = Area.query.all()
        area_dict_list = [area.to_dict() for area in area_list]
        # 查询设施
        facility_list = Facility.query.all()
        facility_dict_list = [facility.to_dict() for facility in facility_list]
        # 构造结果并返回
        return jsonify(area=area_dict_list, facility=facility_dict_list)
    

    创建用户房屋信息

    提交创建用户房屋信息的请求,同时隐藏当前模块,展示之前隐藏的房屋上传信息模块。

    //为房屋表单绑定提交事件
        $('#form-house-info').submit(function () {
            $('.error-msg text-center').hide();
            $.post('/house/new_house/',$(this).serialize(),function (data) {
                if(data.code== '200'){
                    $('#form-house-info').hide();
                    $('#form-house-image').show();
                    $('#house-id').val(data.house_id);
                }else{
                    $('.error-msg text-center').show().find('span').html(ret_map[data.code]);
                }
            });
            return false;
        });      
    

    根据前端发出的请求,创建用户房屋信息。首先实例一个房屋对象,对其属性进行一一赋值,关于设施信息需要遍历前端返回的列表,多个设施信息一一加入。

    @house_blueprint.route('/new_house/', methods=['GET', 'POST'])
    def new_house():
        if request.method == 'GET':
            return render_template('newhouse.html')
    
        if request.method == 'POST':
            # 接收用户信息
            params = request.form.to_dict()
            facility_ids = request.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_list = Facility.query.filter(Facility.id.in_(facility_ids)).all()
                house.facilities = facility_list
            house.add_update()
            # 返回结果
            return jsonify(code='200', house_id=house.id)
    

    用户上传房屋图片

    发起房屋图片信息的请求

    //为图片表单绑定事件
        $('#form-house-image').submit(function (e) {
            e.preventDefault();
            $(this).ajaxSubmit({
                url: "/house/image_house/",
                type: "post",
                dataType: "json",
                success: function (data) {
                    if (data.code == '200') {
                        $('.house-image-cons').append('<img src="'+data.url+'"/>');
                    }
                }
            });
            return false;
        });
    

    后台收到请求,获取前端页面中的信息,通过判断用户房屋图片信息存在来保存首图信息,在之后的首页,及搜索页面中使用。若已存在图片信息,则不再设置首图,只做简单的保存页面即可。

    @house_blueprint.route('/image_house/', methods=['POST'])
    def image_house():
        if request.method == 'POST':
            # 接收房屋编号
            house_id = request.form.get('house_id')
            # 接收图片信息
            f1 = request.files.get('house_image')
            # 保存到图片
            con = Config()
            url = os.path.join(os.path.join(con.UPLOAD_FOLDER, 'house'), f1.filename)
            f1.save(url)
    
            # 保存图片对象
            image = HouseImage()
            image.house_id = house_id
            image.url = os.path.join('/static/upload/house', f1.filename)
            image.add_update()
            # 房屋的默认图片
            house = House.query.get(house_id)
            if not house.index_image_url:
                house.index_image_url = os.path.join('/static/upload/house', f1.filename)
                house.add_update()
            # 返回图片信息
            return jsonify(code='200', url=os.path.join('/static/upload/house', f1.filename))
    

    相关文章

      网友评论

        本文标题:爱家(租房系统)---- 发布房源信息

        本文链接:https://www.haomeiwen.com/subject/upikzftx.html