Exemplo n.º 1
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)
Exemplo n.º 2
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)
Exemplo n.º 3
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)
Exemplo n.º 4
0
def search():
    """
    书籍搜索
    :param q:普通关键字 isbn 13个0到9数字组成, 可能含有一些空格
    :param page:
    :return:
    """
    form = SearchForm(request.args)
    books = BookCollection()

    if form.validate():
        q = form.q.data
        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__)
        # return jsonify(books.__dict__)

    else:

        flash('搜索的关键字不符合要求,请重新输入关键字')

        # return jsonify(form.errors)
    return render_template('search_result.html', books=books)
Exemplo n.º 5
0
def search():
    form = searchform(request.args)  #验证参数
    books = BookCollection()

    if form.validate():
        q = form.q.data.strip()
        page = form.page.data
        # 用来判断q是关键字还是isbn
        key_or_isbn = is_key_or_isbn(q)

        yushu_book = yushubook()

        if key_or_isbn == '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__)
        # return json.dumps(books),200,{'content-type':'application/json'}
        # return jsonify(books)  # 作用和上句相同
        # return 返回的是字符串格式,而result是json即dict格式,需要序列化
    else:
        # return jsonify({'msg':'参数校验失败'})
        flash('参数校验失败')
        return jsonify(form.errors)  #显示具体错误信息
    return render_template('search_result.html', books=books)
Exemplo n.º 6
0
def search():
    # q = request.args['q']
    # page = request.args['page']
    print(request.headers)
    form = SearchBook(request.args)
    books = BookCollection()
    if form.validate():
        q = form.q.data
        page = form.page.data
        isbn_or_key = is_isbn_or_key(q)
        book = YuShuBook()
        if isbn_or_key == 'isbn':
            book.search_by_isbn(q)
            # res = YuShuBook.search_by_isbn(q)
        else:
            book.search_by_keyword(q, page)
            # res = b'str(res)'.decode('utf-8')
            # res = eval(res)
        books.fill(book, q)

    else:
        # return jsonify({'msg': '参数校验失败'})
        flash('搜索错误')
    # return json.dumps(books, default=lambda o: o.__dict__)
    return render_template('search_result.html', books=books)
Exemplo n.º 7
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)
Exemplo n.º 8
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)
Exemplo n.º 9
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)
Exemplo n.º 10
0
def search():
    """

    q: 普通关键词
    page: 页数
    """
    # isbn 13
    # isbn 10个0到9个数字组成
    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_isbn(q, page)
            # result = YuShuBook.search_by_key(q, page)
            # result = BookViewModel.package_collection(result, q)
        # 序列化
        books.fill(yushu_book, q)
        return jsonify(books)
    else:
        return jsonify(form.errors)
Exemplo n.º 11
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)
Exemplo n.º 12
0
def search():
    '''
    Request类实例化后用于?接参数
    :param q:至少要有一个字符
    :param page:正整数,要有最大值限制
    :return:
    '''
    # 验证层概念,参数校验
    form = SearchForm(request.args)
    # form.validate校验参数,从验证层取数据避免没有默认值
    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 render_template('search_result.html', books=books)
Exemplo n.º 13
0
def search():
    """
    q:普通关键字orISBN号
    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)
        shupiao_book = ShuPiaoBook()

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

        #dict转str
        books.fill(shupiao_book, q)
        #return json.dumps(books, default = lambda o: o.__dict__)
        #return json.dumps(books),200,{'content-type':'application/json'}

    else:
        flash('搜索关键字错误')
        #return jsonify(form.errors)
    return render_template('search_result.html', books=books, form=form)
Exemplo n.º 14
0
def search():
    """
    :param q: 普通关键字 isbn
    :param page: 分页参数
    :return:
    """
    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)
        book = Book()

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

        # 返回序列化结果
        books.fill(book, q)
        # return jsonify(books.__dict__)
        # return json.dumps(books, default=lambda o: o.__dict__)
    else:
        # return jsonify(form.errors)
        flash('搜索的关键字不符合要求,请重新输入关键字。')
    return render_template('search_result.html', books=books, form=form)
Exemplo n.º 15
0
def search():
    # q = request.args['q']  # 从Form中取值更好
    # page = request.args['page']  # Immutable不可变字典, request 几乎包含所有 http 请求信息,可以解析问号

    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__)
        # 函数式编程,权限交给调用方,比如 sorted filter
    else:
        # return jsonify(form.errors)
        flash('搜索的关键字不存在')
    return render_template('search_result.html', books=books)
Exemplo n.º 16
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)
Exemplo n.º 17
0
def search():
    """
    q 查询关键字或者isbn
    page
    """
    # 实例化验证器
    form = SearchForms(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)

        elif isbn_or_key == 'key':
            yushu_book.search_by_keyword(q, page=page)

        # return json.dumps(result), 200, {'content-type': 'application/json'}
        books.fill(yushu_book, q)
        # return jsonify(books)
        # 对象不能被序列化成json, 那就把对象的字典序列化成json, 对象中还包含对象的话, 用json.dumps()的default参数指定对对象的操作
        # return json.dumps(books, default=lambda o: o.__dict__)

    else:
        flash('关键字不合要求!')
        # return jsonify(form.errors)
    return render_template('search_result.html', books=books)
Exemplo n.º 18
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)
Exemplo n.º 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)
Exemplo n.º 20
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)
Exemplo n.º 21
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)
Exemplo n.º 22
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)
Exemplo n.º 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)
Exemplo n.º 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
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)