视频01:
略。。。。。。
————————————————————————————————————————————————————————————
视频02:
搜索需要外部数据源,也就是需要外部的API。
图书数据搜索用到的几个地址:
1、关键字搜索http://t.yushu.im/v2/book/searh?q={}&start={}&ount={}
2、isbn搜索 http://t.yushu.im/v2/book/isbn/{isbn} 把参数放在url路径中
3、豆瓣API https://api.doubn.com/v2/book 有API访问频次限制,大概每小时150次,超过后你的IP地址会被暂时封闭一段时间
没有不控制访问频率的API,没有控制,就可能会被别人搞瘫痪了。
————————————————————————————————————————————————————————————
视频03:
本视频学习的几个关键点:
1、学习在url路径中传递参数的方式
@app.route('/book/search/<q>/<page>') 接收参数 def search(q,page): 传入参数
2、q.isdigit()函数可以判断当前字符中是不是全为数字
3、q.replace('-','')函数可以把当前字符串中的短横线替换成空格
4、在有多个条件时,条件的先后顺序是会影响执行效率的,要把大概率出现false的条件放在前面,前面的条件判断为false后,它后面的其他条件就不会再执行了。
如果在条件判断时有耗时操作,如要查询数据库,这样的耗时条件应该尽量放到后面,因为越往后它执行的可能性越小
# 在url路径中传递参数 <q>/<page> @app.route('/book/search/<q>/<page>') def search(q,page): ''' q:普通关键字 或 isbn isbn目前有两种方式:1.isbn13——它是由13个0至9的数字组成;2.isbn10——由10个0到9的数字组成,中间含有一些短横线 - page ''' isbn_or_key = 'key' if len(q) == 13 and q.isdigit(): #q.isdigit()函数可以判断当前字符中是不是全为数字 isbn_or_key = 'isbn' short_q = q.replace('-','') # 在有多个条件时,条件的先后顺序是会影响执行效率的,要把大概率出现false的条件放在前面,如果是false那它后面的其他条件就不会再执行了。 # 如果在条件判断时有耗时操作,如要查询数据库,这样的耗时条件应该尽量放到后面,因为越往后它执行的可能性越小 if '-' in q and len(short_q)==10 and short_q.isdigit(): # q.replace('-','')函数可以把当前字符串中的短横线替换成空格 isbn_or_key = 'isbn' pass
————————————————————————————————————————————————————————————
视频04:
本视频学习的几个关键点:
1、把判断的代码部分提取成一个函数,以提高执行代码的复用性、可读性。
2、好的函数名,要能体现函数的基本功能。在函数体内部最上方可书写函数说明,要养成这种良好的编程习惯。
#新建一个名叫heler.py的文件,单独把抽取出来的条件语句封闭成一个函数,然后在视图函数中调用它 def is_isbn_or_key(word): ''' 当前函数说明: :param word: :return: ''' isbn_or_key = 'key' if len(word) == 13 and word.isdigit(): isbn_or_key = 'isbn' short_word = word.replace('-','') if '-' in word and len(short_word)==10 and short_word.isdigit(): isbn_or_key = 'isbn' return isbn_or_key #因为这是一个函数,所以要把结果返回回去
from helper import is_isbn_or_key # 实例化flask对象 app = Flask(__name__) # 视图函数是项目的起点,阅读或维护代码时也是从这里开始,如果视图函数特别长而乱,维护起来是个很大的问题 # 看源代码,一定要分层去看,第一遍是理清源代码的结构,先不要关注细节 @app.route('/book/search/<q>/<page>') def search(q,page): isbn_or_key = is_isbn_or_key(q) # 用run方法,启动web服务器 if __name__ == '__main__': app.run(host='0.0.0.0',debug=True ,port=5000)
————————————————————————————————————————————————————————————
视频05:
本视频学习的几个关键点:
1、在python中发送http请求有两种方式:
(1)urllib 不用安装,直接使用 from urllib import request;
(2)requests 这个第三方库来实现,它需要安装一下(做项目时推荐使用)
2、Ctrl+Alt+I代码自动缩进
3、用三联表达式来简化代码
4、r = requests.get(url) r.status_code得到状态码 r.json()把得到的数据格式化为json r.text按字符串返回
import requests #创建一个名为HTTP的类 class HTTP: def get(self,url,return_json=True): r = requests.get(url) # r中包含了状态码、headers信息等 # 用三联表达式来简化代码 if r.status_code != 200:#取状态码 return {} if return_json else '' return r.json() if return_json else r.text # if r.status_code == 200:#取状态码 # if return_json: # return r.json()#json格式的通用返回方法 # else: # return r.text # else: # if return_json: # return {} # else: # return ''