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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)