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)
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 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)
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)
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(): # 实力化 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(): """ 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)
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(): """ 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)
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(): '''书籍搜索视图函数。''' 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: 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)
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(): """ 搜索接口 :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 :普通关键字 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: 普通关键词 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 :普通关键字 (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(): """ 图书检索视图 :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)
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(): # 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(): # 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(): """ :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): ''' 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':'参数校验失败'}))
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 = 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(): 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(): ''' :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)
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)
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(): """ 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 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
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 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
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)