def search(): form = SearchForm(request.args) books = {} page = 0 total = 0 q = '' if form.validate(): q = form.q.data page = form.page.data isbn_or_key = is_isbn_or_key(q) yushu = YuShuBook() if isbn_or_key == 'key': yushu.search_by_key(q, page) if isbn_or_key == 'isbn': yushu.search_by_isbn(q) yushu_view = BookCollection(yushu) books = yushu_view.books total = yushu_view.total page = page else: flash('搜索的关键字不符合要求,请重新输入关键字') return render_template('search.html', q=q, books=books, total=total, per_page=current_app.config['PER_PAGE'], current_page=page)
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_key(q, page) books.fill(yushu_book, q) else: flash('搜索的关键字不符合要求,请重新输入关键字') # return jsonify(form.errors) return render_template('search_result.html', books=books)
def search(): """ :param q: key_word or isbn :param page: :return: result """ # # 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) books.fill(yushu_book, q) # result = BookViewModel.package_single(result, q) if isbn_or_key == 'key': yushu_book.search_by_key(q, page) books.fill(yushu_book, q) # return json.dumps(result), 200, {'content-type': 'application/json'} else: flash('there is no result') return render_template('search_result.html', books=books)
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(): # 至少1个字符,有长度限制。 q = request.args['q'] # 至少1个字符,正整数。 page = request.args['page'] ''' 验证层,from app.forms.book import SearchForm 验证代码如下 ''' form = SearchForm(request.args) if form.validate(): q = form.q.data.strip() # 取值并去掉空格 page = form.page.data isbn_or_key = is_isbn_or_key(q) yushubook = YuShuBook() if isbn_or_key == 'isbn': result = yushubook.search_by_isbn(q) else: result = yushubook.search_by_key(q, page) return jsonify(result) else: ''' form异常返回 ''' return form.errors
def search(): # 至少1个字符,有长度限制。 q = request.args['q'] # 至少1个字符,正整数。 page = request.args['page'] ''' 验证层,from app.forms.book import SearchForm 验证代码如下 ''' 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) yushubook = YuShuBook() if isbn_or_key == 'isbn': yushubook.search_by_isbn(q) else: yushubook.search_by_key(q, page) books.fill(q, yushubook) ''' return jsonify(books.__dict__) 不能直接序列化books对象 bookCollection下面的self.books是由其他对象赋值 如果bookCollection的属性都是普通的字符 数字,则可以对books.__dict__进行序列化 ''' #对象序列化,需要传入1个函数,把所有涉及的对象转化成dict # return json.dumps(books,default=lambda o: o.__dict__) else: ''' form异常返回 ''' # return jsonify(form.errors) # return jsonify({"msg":"参数错误"}) ''' 消息闪现 ''' flash('关键字不符合要求,请重新输入') #form传入模板以后 才可以在template页面中使用,可以再base中些,其他模板可以继承 return render_template('search_result.html', books=books, form=form)
def search(): form = SearchForm(request.args) books = BookCollection() if form.validate(): q = form.q.data.strip() page = form.page.data key_or_isbn = is_isbn_or_key(q) print(key_or_isbn) yushu_book = YuShuBook() if key_or_isbn == 'isbn': yushu_book.search_by_isbn(q) else: yushu_book.search_by_key(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(): # 至少1个字符,有长度限制。 q = request.args['q'] # 至少1个字符,正整数。 page = request.args['page'] ''' 验证层,from app.forms.book import SearchForm 验证代码如下 ''' 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) yushubook = YuShuBook() if isbn_or_key == 'isbn': yushubook.search_by_isbn(q) else: yushubook.search_by_key(q,page) books.fill(yushubook,q) ''' return jsonify(books.__dict__) 不能直接序列化books对象 bookCollection下面的self.books是由其他对象赋值 如果bookCollection的属性都是普通的字符 数字,则可以对books.__dict__进行序列化 ''' #对象序列化,需要传入1个函数,把所有涉及的对象转化成dict return json.dumps(books,default=lambda o: o.__dict__) else: ''' form异常返回 ''' return form.errors
def search(): """ 搜索书籍路由 """ # 实例化我们自定义的SearchForm,需要传入一个字典作为要校验的参数 form = SearchForm(request.args) # validate()方法返回True/False来标示是否校验通过 books = BookCollection() # if not form.validate(): # # errors为错误信息提示(上面定义的message) # flash("搜索的关键字不符合要求,请重新输入关键字") # return render_template('search_result.html', books=books) # 从form中获取校验后的参数,不从request里拿,因为我们可能会对数据进行预处理或者默认值的给定 q = form.q.data.strip() page = form.page.data isbn_or_key = is_isbn_or_key(q) yushu_book = YuShuBook() if form.validate(): if isbn_or_key == 'isbn': yushu_book.search_by_isbn(q) books.fill(yushu_book, q) # print(11111, books.books) # for b in books.books: # print('title', b.title) # print('author', b.author) # result = YuShuBook.search_by_isbn(q) # result = BookViewModel.package_single(result,q) else: yushu_book.search_by_key(q, page) # result = YuShuBook.search_by_keyword(q,page) # result = BookViewModel.package_collection(result,q) # return jsonify(result) books.fill(yushu_book, q) Book.insert_into_sql(books.books) else: flash("搜索的关键字不符合要求,请重新输入关键字") # return jsonify(books) # TypeError: Object of type BookCollection is not JSON serializable # return json.dumps(books, default=lambda o: o.__dict__) return render_template('search_result.html', books=books)
def search(): """ 搜索书籍路由 """ form = SearchForm(request.args) 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)
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)