视频06:
定义静态方法的两种方式:
1、在方法上方加上装饰@staticmethod
2、在方法上方加上装饰@classmethod 方法中要加参数cls 如:def search_by_isbn(cls,self,isbn):
#httper.py
import requests class HTTP: @staticmethod # 把当前方法定为静态方法,把此方法封闭在请求类中是为了便于扩展 def get(url,return_json=True): r = requests.get(url) if r.status_code != 200: return {} if return_json else '' return r.json() if return_json else r.text
————————————————————————————————————————————————————————————
视频07-08:
1、url= cls.isbn_url.format(isbn) 把值格式化入指定的字符串
2、静态方法 @classmethod
#yushu_book.py
from httper import HTTP class YuShuBook: isbn_url = 'http://t.yushu.im/v2/book/isbn/{}' keyword_url = 'http://t.yushu.im/v2/book/searh?q={}&start={}&ount={}' @classmethod # 把如下方法定义为静态方法 用@classmethod时,方法中要加参数cls def search_by_isbn(cls,self,isbn): # 把传入的参数isbn,格式化入isbn_url的字符串中http://t.yushu.im/v2/book/isbn/{isbn} url= cls.isbn_url.format(isbn) result = HTTP.get(url) # 调用自定义的静态方法,没有传入return_json,则默认为True return result # 这是一个字典dict @classmethod def search_by_keyword(cls,self,keyword,count=15,start=0): url = cls.keyword_url.format(keyword,count,start) result = HTTP.get(url) return result
3、导入模块的快捷方式,在YuShuBook上按Alt+Enter,然后选择载入对应模块
4、把字典序列化为json json.dumps(result)
return json.dumps(result),200,{'content-type':'application/json'}
# fisher.py
from flask import Flask, make_response, json, jsonify from helper import is_isbn_or_key from yushu_book import YuShuBook app = Flask(__name__) # 视图函数是项目的起点,阅读或维护代码时也是从这里开始,如果视图函数特别长而乱,维护起来是个很大的问题 # 看源代码,一定要分层去看,第一遍是理清源代码的结构,先不要关注细节 @app.route('/book/search/<q>/<page>') def search(q,page): isbn_or_key = is_isbn_or_key(q) if isbn_or_key == 'isbn': result = YuShuBook.search_by_isbn(q) # 导入模块的快捷方式,在YuShuBook上按Alt+Enter,然后选择载入对应模块 else: result = YuShuBook.search_by_keyword(q) # 方法一 # return json.dumps(result),200,{'content-type':'application/json'} # 方法二 推荐使用 from flask import jsonify return jsonify(result) # 用run方法,启动web服务器 if __name__ == '__main__': app.run(host='0.0.0.0',debug=True ,port=5000)
————————————————————————————————————————————————————————————
视频09-11:
1、不推荐把所有视图函数放到一个py文件里边,不好维护,不同的业务模型应该放到不同的py中去
2、改造项目,整理结构