예제 #1
0
파일: book.py 프로젝트: gotgith/fisher
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)
예제 #2
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
예제 #3
0
파일: book.py 프로젝트: shenmou98/fisher
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)
예제 #4
0
파일: book.py 프로젝트: MattHony/YuShu_
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)
예제 #5
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)
예제 #6
0
파일: book.py 프로젝트: Annihilater/fisher
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)
예제 #7
0
파일: book.py 프로젝트: LRYnew/fisher
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)
예제 #8
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)
예제 #9
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)
예제 #10
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)
예제 #11
0
def search():
    # request是flask提供的对象,使用request需要注意是否在视图函数的上下文中触发的
    form = SearchForm(request.args)
    books = BookCollection()
    if form.validate():
        q = form.q.data.strip(
        )  # 这里通过form获取q,而不通过request.args['q']获取,是因为验证层可能会有默认值
        page = form.page.data
        yushu_book = YuShuBook()  # dict结构
        if isbn_or_key(q) == 'key':
            # result = YuShuBook.search_by_keyword(q, page)
            yushu_book.search_by_keyword(q, page)
        else:
            # result = YuShuBook.search_by_isbn(q)
            yushu_book.search_by_isbn(q)
        books.fill(yushu_book, q)  # viewmodel
        # return books, 200, {'content-type': 'application/json'}

    else:
        # 检验不通过的error这里是在form对象里,另外一般库是放在异常里抛出来的
        # return jsonify(form.errors)
        #
        flash('没有找到搜索内容')
    # 对象序列化成字典,递归,对于对象里属性又是对象,用lambda表达式进行转换
    # return json.dumps(books, default=lambda o: o.__dict__)
    return render_template('search_result.html', books=books)
예제 #12
0
파일: book.py 프로젝트: whyjust/fisher
def search():
    '''
    搜索函数
    :param: q:[普通关键字 isbn] page,放在request中通过args获取
    :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 obj:obj.__dict__,ensure_ascii=True)'''

    else:
        '''return jsonify(form.errors)'''
        flash('您输入的搜索关键字不符合要求,请重新输入')
    return render_template('search_result.html', books=books, form=form)
예제 #13
0
def search():
    """
    isbn13 由13个0到9数字组成
    isbn10 10个0到9数字组成 含有一些' - '
    """
    # q = request.args['q']
    # page = request.args['page']
    form = SearchForm(request.args)
    books = BookCollection()
    # 若没有传入任何参数,form.validate()会返回false
    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)
            # 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(result), 200, {'content-type':'application/json'}
        # return jsonify(result) 无法直接序列化对象
        # return json.dumps(books, default=lambda o:o.__dict__)
    else:
        # return jsonify({'msg':'param verification failure, %s' % json.dumps(form.errors)})
        # return jsonify(form.errors)
        flash('搜索的关键字不符合要求,请重新输入关键字')

    return render_template('search_result.html', books=books, form=form)
예제 #14
0
def search():
    """
        q:普通关键字
        page:页码
        ?q=金庸&page=1
    :return:
    """
    form = SearchForm(request.args)
    books = BookCollection()

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

        isbin_or_key = is_isbin_or_key(q)
        yushu_book = YuShuBook()

        if isbin_or_key == 'isbin':
            yushu_book.search_by_isbn(q)
        else:
            yushu_book.search_by_keyword(q, page)
        books.fill(yushu_book, q)
        return json.dump(books, default=lambda o: o.__dict__)
    else:
        return form
예제 #15
0
파일: book.py 프로젝트: maiya90/spare
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)
예제 #16
0
파일: book.py 프로젝트: ruansong730/fisher
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)
예제 #17
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)
예제 #18
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)
예제 #19
0
파일: book.py 프로젝트: cellur/fisher
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)
예제 #20
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)
예제 #21
0
파일: book.py 프로젝트: natee1992/fisher
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)
예제 #22
0
파일: book.py 프로젝트: wangchufeng/fisher
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)
예제 #23
0
파일: book.py 프로젝트: yuansuixin/Fisher
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)
예제 #24
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)
예제 #25
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)
예제 #26
0
파일: book.py 프로젝트: Omega-ZhangH/fisher
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)
예제 #27
0
파일: book.py 프로젝트: yesixuan/fisher
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)
예제 #28
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)
예제 #29
0
파일: book.py 프로젝트: skywalkeryin/YuShu
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)
예제 #30
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)
예제 #31
0
파일: book.py 프로젝트: ZTT001/learngit
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)