Exemple #1
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()
        isbn_or_key = is_isbn_or_key(q)

        if isbn_or_key == 'isbn':
            yushu_book.search_by_isbn(q)
            # result = yushu_book.search_by_isbn(q)
            # result = _BookViewModel.package_single(result, q)
        else:
            yushu_book.search_by_keyword(q, page)
            # result = yushu_book.search_by_keyword(q, page)
            # result = _BookViewModel.package_collection(result, q)
        # return jsonify(result)
        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)
Exemple #2
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)
Exemple #3
0
def search():
    """
    :q keyword or isbn
    :page 分页
    :return:
    """
    form = SearchForm(request.args)
    books = BookCollectionViewModel()
    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':
            # 面向过程
            # result = yushu_book.search_by_isbn(q)
            # result = BookViewModel.package_single(result, q)
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)
        books.full(yushu_book, q)

        # 对象进行序列化
        # return json.dumps(books, default=lambda obj: obj.__dict__)
        # jsonify 序列化方法
        # return jsonify(books)
    else:
        # return jsonify({"msg": "参数验证失败"})
        # return jsonify(form.errors)
        flash('搜索的关键字不符合要求,请重新进行搜索')

    return render_template('search_result.html', books=books, form=form)
Exemple #4
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)
Exemple #5
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)
Exemple #6
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)
Exemple #7
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)
Exemple #8
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)
Exemple #9
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)
Exemple #10
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)
Exemple #11
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)
Exemple #12
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)
Exemple #13
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)
Exemple #14
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)
Exemple #15
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)
Exemple #16
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)
Exemple #17
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)
Exemple #18
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)
Exemple #19
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)
Exemple #20
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)
Exemple #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)
Exemple #22
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)
Exemple #23
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':'参数校验失败'}))
Exemple #24
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)
Exemple #25
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)
Exemple #26
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)
Exemple #27
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)
Exemple #28
0
def search():
    '''

    :param q: isbn or key
    :param page:
    :return:
    '''
    # request.args是不可变字典。可以调用to_dict()方法可以转换成可变字典
    # q = request.args['q']
    # page = request.args['page']
    form = SearchForm(request.args)
    if form.validate():
        # strip 去掉前后的空格
        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)
        else:
            result = YuShuBook.search_by_keyword(q, page)
        # dict序列化
        # return json.dumps(result), 200, {'content-type':'application/json'}
        return jsonify(result)
    else:
        return jsonify(form.errors)
Exemple #29
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)
Exemple #30
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)
Exemple #31
0
 def can_save_to_list(self, isbn):
     if is_isbn_or_key(isbn) != 'isbn':
         return False
     yushu_book = YuShuBook()
     yushu_book.search_by_isbn(isbn)
     if not yushu_book.first:
         return False
     # 不允许一个用户同时赠送多本相同的图书
     # 一个用户不可能同时是赠送者和索要者
     #         既不在心愿清单也不再赠送清单才能添加
     gifting = Gift.query.filter_by(uid=self.id, isbn=isbn, launched=False).first()
     wishing = Wish.query.filter_by(uid=self.id, isbn=isbn, launched=False).first()
     if not gifting and not wishing:
         return True
     else:
         return False
Exemple #32
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)
Exemple #33
0
    def can_save_to_list(self, isbn):
        """
        判断可以将书籍加入心愿清单
        1.如果isbn编号不符合规则,不允许添加
        2.如果isbn编号对应的书籍不存在,不允许添加
        3.同一个用户,不能同时赠送同一本书籍
        4.一个用户对于一本书不能既是赠书者,又是索要者
        5.3和4合并成一条,就是一本书必须即不在心愿清单又不在赠书列表里才可以添加
        :param isbn:
        :return:
        """
        if not is_isbn_or_key(isbn):
            return False

        yushu_book = YuShuBook()
        yushu_book.search_by_isbn(isbn)
        if not yushu_book.first:
            return False

        gifting = Gift.query.filter_by(uid=self.id, isbn=isbn, launched=False).first()
        wishing = Wish.query.filter_by(uid=self.id, isbn=isbn, launched=False).first()
        return not wishing and not gifting
Exemple #34
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)