学习python-20191208(2)-Python Flask高级编程开发鱼书_第03章_数据与flask路由

视频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、改造项目,整理结构

posted on 2019-12-08 19:13  闪亮的金子  阅读(298)  评论(0编辑  收藏  举报