• 学习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、改造项目,整理结构

  • 相关阅读:
    'Undefined symbols for architecture i386,clang: error: linker command failed with exit code 1
    The codesign tool requires there only be one 解决办法
    XCode iOS project only shows “My Mac 64bit” but not simulator or device
    Provisioning profile XXXX can't be found 的解决办法
    UIView 中的控件事件穿透 Passthrough 的实现
    Xcode4.5出现时的OC新语法
    xcode 快捷键(持续更新)
    打越狱包
    php缓存与加速分析与汇总
    浏览器的判断
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/12006756.html
Copyright © 2020-2023  润新知