Example #1
0
def search():
    form = SearchForm(request.args)
    books = {}
    page = 0
    total = 0
    q = ''
    if form.validate():
        q = form.q.data
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu = YuShuBook()
        if isbn_or_key == 'key':
            yushu.search_by_key(q, page)
        if isbn_or_key == 'isbn':
            yushu.search_by_isbn(q)
        yushu_view = BookCollection(yushu)
        books = yushu_view.books
        total = yushu_view.total
        page = page
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
    return render_template('search.html',
                           q=q,
                           books=books,
                           total=total,
                           per_page=current_app.config['PER_PAGE'],
                           current_page=page)
Example #2
0
def search():
    """
           q :普通关键字 isbn
           ?q=金庸&page=1
    """
    # 获取请求内容
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data

        # 判断是否为isbn
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        # 搜索结果,并存储到yushu_book中
        if isbn_or_key:
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_key(q, page)

        # 封装数据
        books.fill(yushu_book, q)

    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
        # return jsonify(form.errors)

    # 由于books是对象,需要将对象转换成json
    # return json.dumps(books, default=lambda o: o.__dict__)
    return render_template('search_result.html', books=books)
Example #3
0
def search():
    """

    :param q: keyword or isbn
    :param page:   start or count
    :return:
    """
    form = SearchForm(request.args)
    books = BookCollection()
    if form.validate():
        q = form.q.data.strip()
        page = form.page.data

        yushu_book = YuShuBook()
        isbn_or_key = is_isbn_or_key(q)
        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
            # result = BookViewModel.package_single(result, q)
        else:
            yushu_book.search_by_keyword(q, page)
            # result = BookViewModel.package_collection(result, q)

        books.fill(yushu_book, q)
        # return json.dumps(books, default=lambda o: o.__dict__, ensure_ascii=False)
    else:
        flash('Keyword is not correct. Please rekey in.')
        # return jsonify(form.errors)
    return render_template('search_result.html', books=books)
Example #4
0
def search():
    # q = request.args['q']  #  /book/search?q=423423444&page=1
    # page = request.args['page']
    #  request.args下面还包含许多其他信息,但是是不可变字典
    #  a = request.args.to_dict()   将其转为可变字典
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        # strip函数剔除字符串前后空格
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)
        books.fill(yushu_book, q)
        #  return json.dumps(result), 200, {'content-type': 'appplication/json'}

        #  返回的result是一个字典,需要将其序列化,python无法直接序列化一个对象
        #  所以return jsonify(books)时候,books里面含有对象,会报错解决办法如下,利用__dict__属性

        # return json.dumps(books, default=lambda o: o.__dict__)

    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
        # return jsonify(form.errors)
    return render_template('search_result.html', books=books, form=form)
Example #5
0
def search():
    """
        q: 普通关键字 isbn
        page:
    :return:
    """
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = helper.is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)
        books.fill(yushu_book, q)
        # print(json.dumps(books, default=lambda o: o.__dict__))
        # return json.dumps(books, default=lambda o: o.__dict__)
    else:
        flash('搜索关键词不符合要求,请重新输入')
        # return jsonify(form.errors)
    return render_template('search_result.html', books=books, form=form)
Example #6
0
def search():
    '''
    :param q:
    :param page:
    :return:
    '''
    # print('haha:%s' % (request.args['q']))
    form = SearchForm(request.args)
    books = BookCollection()
    if form.validate():
        q = form.q.data.strip()
        page = form.page.data

        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()
        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)
        books.fill(yushu_book, q)
        # return json.dumps(books, default=lambda o: o.__dict__)
    else:
        # return jsonify(form.errors)
        flash('搜索的关键字不符合要求,请重新输入关键字')
    return render_template('search_result.html', books=books)
Example #7
0
def search(q, page):
    '''
        q :普通关键字 isbn
        page
        

    isbn isbn13 13个0到9的数字组成
    isbn10 10个0到9的数字组成,含有一些' - '

    Request Response
    HTTP的请求信息
    查询参数 POST参数 remote ip
    '''
    q = request.args['q']
    page = request.args['page']

    # 参数验证
    form = SearchForm(request.args)
    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        if is_isbn_or_key == 'isbn':
            result = YuShuBook.search_by_isbn(q)
        else:
            result = YuShuBook.search_by_keyword(q, page)
        # 序列化
        # API
        return jsonify(result)
    else:
        return jsonify(({'msg':'参数校验失败'}))
Example #8
0
def search():
    """
        q:普通关键字 isbn
        page
        ?q=金庸&page=1
    :return:
    """
    # http://127.0.0.1:5000/book/search/9787544270878/1
    # http://127.0.0.1:5000/book/search?q=9787544270878&page=1
    # http://127.0.0.1:5000/book/search?q=郭敬明&page=1

    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        # a = request.args.to_dict()
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        change_book = ChangeBook()

        if isbn_or_key == 'isbn':
            change_book.search_by_isbn(q)
        else:
            change_book.search_by_keyword(q, page)

        # __dict__
        books.fill(change_book, q)
        # return json.dumps(books, default=lambda o:o.__dict__, ensure_ascii=False)
        # return jsonify(books.__dict__)
    else:
        flash('搜索的关键词不符合要求,请重新输入')
        # return jsonify(form.errors)
    return render_template('search_result.html', books=books)
Example #9
0
def search():
    '''书籍搜索视图函数。'''
    form = SearchForm(request.args)  # 提交网页的 GET 请求参数
    books = BookCollection()
    if form.validate():  # 使用 wtforms 验证输入是否正确
        q = form.q.data.strip()
        page = form.page.data
        bookgetter = BookGetter()
        isbn_or_key = is_isbn_or_key(q)  # 判断 q 是关键字还是 isbn

        if isbn_or_key == 'isbn':
            bookgetter.search_by_isbn(q)
        else:
            bookgetter.search_by_keyword(q, page)

        books.fill(bookgetter, q)
        '''
        # 返回 books 对象中所有变量的字典形式
        import json
        return json.dumps(books, default=lambda x: x.__dict__,
                          ensure_ascii=False, indent=4), 200, {'content-type': 'application/json'}
        '''
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
        # return jsonify(form.errors)
    return render_template('web/search_result.html', books=books)
Example #10
0
def search():
    '''
    q :普通关键词和isbn
    page
    ?q=金庸&page=1
    '''
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)

        if isbn_or_key == 'isbn':
            yushu_book = YuShuBook()
            yushu_book.search_by_isbn(q)
        else:
            yushu_book = YuShuBook()
            yushu_book.search_by_keyword(q,page)

        books.fill(yushu_book,q)

        #dict序列化 API
        #return json.dumps(books,default=lambda o: o.__dict__)
        #return jsonify(books)
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
        #return jsonify(form.errors)

    return render_template('search_result.html', books=books)
Example #11
0
def search():
    """
        q: keyword/isbn
        page
    :return:
    """
    # request.args: immutable dict
    # a = request.args.to_dict()

    # validation layer
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        fisher_book = FishBook()

        if isbn_or_key == 'isbn':
            fisher_book.search_by_keyword(q)
        else:
            fisher_book.search_by_keyword(q, page)

        books.fill(fisher_book, q)
        # return json.dumps(books, default=lambda o: o.__dict__)

        # return json.dumps(result), 200, {'content-type': 'application/json'}
    else:
        flash('invalid search keyword')
        # return jsonify(form.errors)
    return render_template('search_result.html', books=books)
Example #12
0
def search():
    """
    搜索接口
    :param p: 关键字 isbn
    :param page: 页数
    :return: 根据isbn或者关键字返回相应字段
    """
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        p = form.p.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(p)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(p)
        else:
            yushu_book.search_by_keyword(p, page)

        books.fill(yushu_book, p)
        return json.dumps(books, default=lambda o: o.__dict__)
        # return jsonify(books)
    else:
        return jsonify(form.errors)
Example #13
0
def search():
    """
        :param
        q - 普通关键字或者 ISBN
        page
        ?q=...&page=...
    """

    # request 需要时视图函数中使用,这是一种代理模式。类似 express 传入的 request
    # request.args 返回的是 immutablemultidict
    # 如果要转成普通字典,可以:temp = request.args.to_dict()

    # 参数验证
    # 至少一个字符,长度限制
    # 正整数,需要最大值限制
    # 这里使用 wtforms 库

    try:
        q = request.args['q']
        page = request.args['page']
        form = SearchForm(request.args)
        if form.validate():
            q = form.q.data.strip()
            page = form.page.data
            isbn_or_key = is_isbn_or_key(q)
            if isbn_or_key == 'isbn':
                result = YuShuBook.search_by_isbn(q, page)
            else:
                result = YuShuBook.search_by_keyword(q, page)
            return jsonify(result)
        else:
            return jsonify(form.errors)
    except:
        return jsonify({'msg': '服务器内部错误'})
Example #14
0
def search():
    """
        q: 普通关键字  isbn
        page:
    """
    # q = request.args['q']
    # page = request.args['page']
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(yushu_book, q)
        # result是一个dict  序列化为json字符串返回
        # return json.dumps(books, default=lambda obj: obj.__dict__)
        # return json, dumps(result), 200, {'content-type':'application/json'}
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
    return render_template('search_result.html', books=books)
Example #15
0
def search():
    """
    q:普通关键字, isbn (搜索类别)
    page:分页使用,默认为1
    """
    # q = request.args['q']
    # page = request.args['page']
    form = SearchForm(request.args)
    books = BookCollection()
    if form.validate():
        q = form.q.data.strip()  #去掉前后空格
        page = form.page.data  #从form中取值,避免没有传page值为空 wtf验证参数设置默认值为1
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(yushu_book, q)
        #return jsonify(books.__dict__)
        # #books为一个对象,jsonify不能序列化一个对象,调用__dict__转成字典格式
        ##假如books内嵌的一个类实例对象中又内嵌一个类实例对象,调用一次__dict__不能解决问题
        #return json.dumps(books,default=lambda o: o.__dict__)  #将处理后的dict数据转化成json数据
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
    return render_template('search_result.html', books=books)
Example #16
0
def search():
    '''
        q: 普通关键字  isbn
        page
    :return:
    '''
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()  # 最好从form里面取出来参数,因为如果没有传值的时候,form里面有设置默认值
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)  # 保证视图函数里的代码简介易懂
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            YuShuBook.search_by_keyword(q, page)

        books.fill(yushu_book, q)
        # return jsonify(books)
        # json.dumps(books, default=lambda o: o.__dict__)
    else:
        flush('搜索的关键字不符合要求')
        # return jsonify(form .errors)
    return render_template('search_result.html', books=books)
Example #17
0
def search():
    """
    图书检索视图
    :param q: isbn 或者 关键字
    :param page: 页数
    :return:
    """
    search_form = SearchForm(request.args)
    books = BookCollection()

    if search_form.validate():
        q = search_form.q.data.strip()
        page = search_form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(yushu_book, q)
        # json模块的default实现了将方法实现交给使用者
        # return json.dumps(books, default=lambda o: o.__dict__)
    else:
        # return jsonify({'msg': 'noting..'})
        flash("搜索的关键字不符合要求,请重新输入...")
    # return json.dumps(result), 200, {'content-type': 'application/json'}
    return render_template("search_result.html", books=books, form=search_form)
Example #18
0
def search():
    """
        q : 普通关键字 isbn
        page
    """
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        #a = request.args.to_dict()
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
            # result = YuShuBook.search_by_isbn(q)
            # result = BookViewModel.pacage_single(result,q)
        else:
            yushu_book.search_by_keyword(q, page)
            # result = YuShuBook.search_by_keyword(q,page)
            # result = BookViewModel.package_collection(result,q)

        books.fill(yushu_book, q)
        # return jsonify(result)

        # return jsonify(books.__dict__)

    else:
        flash('搜素的关键词无效')
    return render_template('search_result.html', books=books)
Example #19
0
def search():
    print(request.args)# 获取参数值
    
    # 验证传递过来的参数
    form = SearchForm(request.args)
    books = BookCollection()
    if form.validate():
        print('search()参数验证通过!')
        # 获取验证通过后的值,从验证器中取值
        q = form.q.data.strip()
        page = form.page.data
        
        # 获取关键字的类型
        isbn_or_key = is_isbn_or_key(q)
        
        yushu_book = YuShuBook()
        # 通过关键字获取图书
        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        elif isbn_or_key == 'key':
            yushu_book.search_by_keyword(q, page)
            
        books.fill(yushu_book, q)
        # Flask提供的返回JSON的做法,return json.dumps(result),200,{'content-type':'application/json'}原生返回JSON数据的做法
#         return jsonify(books.__dict__)# python不能直接序列化对象books
#         return json.dumps(books, default=lambda o:o.__dict__)   # 通过匿名函数将不能序列化的对象序列化
    else:
        flash('search()验证失败!')
    json.dumps(books, default=lambda o:o.__dict__)
    return render_template('search_result.html', books=books)
Example #20
0
def search():
    # 实力化 wtforms 对象,还需要调用该对象的 validate 方法才能真正实施调用
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        """
            通过 wtforms 取得表单数据而不是通过 request.args
            这样才能取到 wtforms 中定义的默认值
        """
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q)

        # dict 序列化
        books.fill(yushu_book, q)
        # return json.dumps(books, default=lambda o: o.__dict__)
    else:
        flash('搜索关键字不符合要求,请重新输入!')
        return jsonify(form.errors)

    return render_template('search_result.html', books=books)
Example #21
0
def search():
    # q = request.args['q']
    # page = request.args['page']
    # a = request.args.to_dict()  # 将不可边的字典 immutablemultidict 转化为可变字典 dict
    args = request.args
    form = SearchForm(args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == "isbn":
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(yushu_book, q)
        # return json.dumps(books, default=lambda o: o.__dict__)
    else:
        flash("搜索的关键字不符合要求,请重新输入关键字")
        # return jsonify(form.errors)

    return render_template("search_result.html", books=books, form=form)
Example #22
0
def search():
    # q = request.args['q']
    # page = request.args['page']
    args = request.args
    form = SearchForm(request.args)
    books = BookCollection()
    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()
        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
            # result = YuShuBook.search_by_isbn(q)
            # result = BookViewModel.package_single(result, q)
        else:
            yushu_book.search_by_keyword(q, page)
            # result = YuShuBook.search_by_keyword(q, page)
            # result = BookViewModel.package_collection(result, q)
        books.fill(yushu_book, q)

        #     dict 序列化
        # return json.dumps(books, default=lambda o: o.__dict__), 200, {'content-type': 'application/json',
        # 'Access-Control-Allow-Origin': '*'}
        # return jsonify(books.__dict__)
        # return json.dumps(result), 200, {'content-type': 'application/json', 'Access-Control-Allow-Origin': '*'}
    else:
        # return jsonify(form.errors)
        flash('未查找到符合要求的书籍!')
    return render_template('search_result.html', books=books)
Example #23
0
def search():
    # 原则,有很大可能性为假的条件放在最前面
    # 将耗时的操作放在后面
    q = request.args['q']
    page = request.args['page']

    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data

        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
            # result = YuShuBook.search_by_isbn(q)
            # result = BookViewModel.package_single(result, q)
        else:

            yushu_book.search_by_keyword(q, page)
            # result = YuShuBook.search_by_keyword(q)
            # result = BookViewModel.package_collection(result, q)

        books.fill(yushu_book, q)

        # return json.dumps(books, default = lambda x: x.__dict__)
        # return jsonify(result)
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
        # return jsonify(form.errors)
    return render_template('search_result.html', books=books)
Example #24
0
def search():
    """
        q: isbn && 普通のキーワード
        page(start, count)
        別の例: ?q=作家名&page=1
    :return:
    """
    # クライアントからのパラメータを制限かける
    # 長さの制限かける
    # q = request.args["q"]
    # 整数である、最大値制限をかける
    # page = request.args["page"]
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(yushu_book, q)
        return json.dumps(books, default=lambda o: o.__dict__)
    else:
        return form.errors
Example #25
0
def search():
    """
        q :普通关键字 isbn
        page
        ?q=金庸&page=1
    """

    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(yushu_book, q)
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
        # return jsonify(form.errors)
    return render_template('search_result.html', books=books, form=form)
Example #26
0
def search():
    """
    :return:
    """
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data
        page = form.page.data
        yushu_book = YuShuBook()
        key_or_isbn = is_isbn_or_key(q)

        if key_or_isbn == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(q, yushu_book)
        # dict序列化
        # return jsonify(books)
        # return json.dumps(result), 200, {'content-type': 'application/json'}
    else:
        flash('您搜索的关键字不合法!!')
    # return json.dumps(books, default=lambda o: o.__dict__)  序列化
    return render_template('search_result.html', books=books)
Example #27
0
def search():
    """ q:用户传递的参数
        page:用户传递的页面
    """
    # 通过验证层判断参数是否合法
    form = SearchForm(request.args)
    books = BookCollection()  # 实例化修整的数据类

    if form.validate():
        # 取出验证后的值,并去除前后的值
        q = form.q.data.strip()
        page = form.page.data
        # 判断用户传入的参数是否为isbn
        isbn_or_key = is_isbn_key(q)

        yushu_book = YuShuBook()  # 实例化鱼书book

        if isbn_or_key == 'isbn':
            # 在pycharm中选择YuShuBook安住option+enter可以自动导入类
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(yushu_book, q)
        # return json.dumps(books, default=lambda o: o.__dict__, ensure_ascii=False)
        # return jsonify(books)
    else:
        # 返回自定义的错误返回
        # return jsonify({'msg': '参数校验失败'})
        # return jsonify(form.errors)
        flash('搜索关键字不符合要求,请重新输入关键字')
    return render_template('search_result.html', books=books)
Example #28
0
def search():
    """
        q :普通关键字 (keyword) isbn
        page
    """
    # 第一种方式 验证方法q,page
    # q = request.args['q']
    # page = request.args['page']
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()  # strip()除去q前后存在空格
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
            # result = YuShuBook.search_by_isbn(q)
            # result = BookViewModel.package_single(result, q)
        else:
            yushu_book.search_by_keyword(q, page)
            # result = YuShuBook.search_by_keyword(q, page)
            # result = BookViewModel.package_collection(result, q)

        books.fill(yushu_book, q)
        return json.dumps(books, default=lambda o: o.__dict__)
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
    return render_template('search_result.html', books=books, form=form)
Example #29
0
def search():
    # q = request.args['q']   #获取参数
    # page = request.args['page']
    form = SearchForm(request.args)
    books = BookCollection()  #处理多数据
    if form.validate():
        q = form.q.data.strip()  #获取form验证通过的参数
        isbn_or_key = is_isbn_or_key(q)
        page = form.page.data
        yushu_book = YuShuBook()
        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
            # result = YuShuBook.search_by_isbn(q)  if YuShuBook.search_by_isbn(q) else ''
            # result =BookViewModel.package_single(result, q)
        else:
            yushu_book.search_by_keyword(q, page)
            #老方法对应view_model中的伪类
            # result = YuShuBook.search_by_keyword(q)
            # result = BookViewModel.package_collection(result, q)
        # return json.dumps(result),200,{'content-type': 'application/json'}
        books.fill(yushu_book, q)  #这是一个对象,且不是普通的对象,所以不能用__dict__。它是的属性同样是一个对象。
        # return json.dumps(books, default=lambda o: o.__dict__)  #后面函数采用了递归的思想,如果属性为一个对象,则继续调用__dict__方法
        # return jsonify(books)
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')
    return render_template('search_result.html', books=books)
Example #30
0
def search():
    # result1 = request.args['q']
    # result2 = request.args['key']
    # print(request.args.to_dict())
    # print(result2)
    # print(result1)
    # response =  make_response('hello world',200)
    # header = {
    #     'content-type': 'text/plain',
    #     'location': 'http://www.baidu.com'
    # }
    # response.header = header
    # return response
    # return 'hello world',302,header
    form = SearchForm(request.args)
    books = BookCollection()
    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()
        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)

        books.fill(yushu_book, q)
    else:
        flash('搜索的关键字不符合要求,请重新输入关键字')

    # return json.dumps( books, default=lambda o:o.__dict__ ) ,200 ,{'content-type':'application/json'}
    return render_template("search_result.html", books=books, form=form)
Example #31
0
def search():
    """
    :param q: 关键字还是isbn
    :param page: 分页相关
    :return:
    """
    # Request:HTTP 请求相关信息,查询参数,POST参数,remote_ip
    # Response:
    # q ,page = request.args['q'],request.args['page']
    # q和page合法校验。q:至少有一个字符,长度限制,page :正整数,一个最大值

    # 验证层,参数校验
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data  # 没有传递page,会获取到默认值1
        isbn_or_key = is_isbn_or_key(q)
        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            # 第一次的亲密接触api:http://127.0.0.1:81/book/search/9787501524044/1
            # 第一次的亲密接触api:http://127.0.0.1:81/book/search?q=9787501524044&page=1
            # 如果没有导入,快捷导入:alt+enter

            yushu_book.search_by_isbn(q)
            # ret = YuShuBook.search_by_isbn(q)
            # result = BookViewModel.package_single(ret,q)
        else:
            yushu_book.search_by_keyword(q, page)
            # ret = YuShuBook.search_by_keyword(q,page)
            # result = BookViewModel.package_collection(ret,q)
        books.fill(yushu_book, q)

        # 主要是这种返回的思路,带上响应头
        # return json.dumps(result,ensure_ascii=False),200,{'content-type':'application/json'})
        # API:数据用json格式返回给客户端
        return json.dumps(books, default=lambda o: o.__dict__)  # 把不能序列化的类,转换为可以序列化的
        # return jsonify(books)
    return jsonify(form.errors)
Example #32
0
def search():
    """
    搜索书籍路由
    """
    form = SearchForm(request.args)
    books = BookCollection()
    if form.validate():
        q = form.q.data.strip()
        isbn_or_key = is_isbn_or_key(q)

        yushu_book = YuShuBook()

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
        else:
            page = form.page.data
            yushu_book.search_by_key(q, page)

        books.fill(yushu_book, q)
    else:
        flash("搜索的关键字不符合要求,请重新输入关键字")

    return render_template("search_result.html", books=books)