zoukankan      html  css  js  c++  java
  • 学习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、改造项目,整理结构

  • 相关阅读:
    LINUX查看硬件配置命令
    jmeter录制对于ip代理会失效
    性能测试常用指标
    jmeter使用jdbc获取注册验证码进行注册
    jmeter测试文件上传功能
    JMeter 功能挖掘之 WEB 文件导出
    分别用C/C++实现栈
    javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决
    jquery解决file上传图片+图片预览
    使用SetInterval时函数不能传参问题
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/12006756.html
Copyright © 2011-2022 走看看