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

  • 相关阅读:
    IntrospectorCleanupListener作用
    买新车流程
    EXCEL-表格安全性:加密给与不同操作权限、表格怎么不让别人复制粘贴?
    全球安全帽品牌推荐整理
    Oracle-SQL语句的语法顺序和执行顺序
    Oracle-除了会排序,你对ORDER BY的用法可能一无所知!
    EXCEL——排序函数RANK,6种花式使用技巧
    常用云盘总结
    关于运算符结合顺叙的一些小探索
    类继承小总结
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/12006756.html
Copyright © 2011-2022 走看看