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

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

  1. 学习python-20191203-Python Flask高级编程开发鱼书_第02章 Flask的基本原理与核心知识

    视频01: 做一个产品时,一定要对自己的产品有一个明确的定位.并可以用一句话来概括自己产品的核心价值或功能. 鱼书网站几个功能 1.选择要赠送的书籍,向他人赠送书籍(价值功能,核心价值的主线): 2. ...

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

    视频01: 略...... ———————————————————————————————————————————————————————————— 视频02: 搜索需要外部数据源,也就是需要外部的A ...

  3. 学习python-20191230(1)-Python Flask高级编程开发鱼书_第04章_应用、蓝图与视图函数

    视频06: 1.自动导包快捷键——默认为alt + enter 键组合          选中的字符由小写变为大写——Ctrl + Shift + U键组合 2.DataRequired()——防止用 ...

  4. 学习python-20191217(1)-Python Flask高级编程开发鱼书_第04章_应用、蓝图与视图函数

    视频01: flask框架:最上层是app,它就像一个插线板一样,比如可以插入蓝图,还可以插入其他各种flask插件. 每个蓝图又可以插入很多视图函数,并可指定静态文件夹和模板文件夹. 好的代码结构, ...

  5. Python Flask高级编程

    第1章 课程导语介绍课程的内容1-1 开宗明义 试看1-2 课程维护与提问 第2章 Flask的基本原理与核心知识本章我们首先介绍Python官方推荐的最佳包与虚拟环境管理工具:Pipenv.接着我们 ...

  6. 《Python编程从入门到实践》_第六章_字典

    一个简单的字典 #用户信息 user = {','city':'shanghai'} print(user['name']) print(user['age']) print(user['city'] ...

  7. 《Python编程从入门到实践》第二章_变量和简单数据类型

    什么是变量呢? 举例: >>> message = "Hello,Python!" >>> print (message) Hello,Pyth ...

  8. python高级编程之描述符与属性03

    # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #属性Property #提供了一个内建描述符类型,它知道如何将一个 ...

  9. 程序思想中的冒泡法在python和1200PLC中scl高级编程中的应用

    冒泡排序:是计算机科学领域里面的一种算法. header 这个算法名字的由来是因为在执行算法的时候越小的元素会经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧 ...

随机推荐

  1. (1)opencv的安装和遇到的问题

    opencv的安装主要是看的这个博客 https://blog.csdn.net/w_chaoqi/article/details/81949738 然后在把代码粘贴上时,出现,不识别我的opencv ...

  2. 吴裕雄--天生自然MySQL学习笔记:MySQL 创建数据表

    创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name col ...

  3. JavaScript—面向对象小例子

    什么是面向对象 要是以前别人问我.随口道来,封装继承多态,万物皆对象...一大推.说的自己都以为自己掌握了面向对象.呵呵一笑.确实掌握了 只是不会用..... 什么是面向对象编程 以前 学.Net 虽 ...

  4. java类的实例化顺序

    1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行 2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行 3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行 4 ...

  5. ALAsset

    ALAsset类代表相册中的每个资源文件,可以通过它获取资源文件的相关信息还能修改和新建资源文件,ALAssetRepresentation类代表相册中每个资源文件的详细信息,可以通过它获取资源的大小 ...

  6. 吴裕雄--天生自然Linux操作系统:Linux 文件与目录管理

    Linux的目录结构为树状结构,最顶级的目录为根目录 /. 其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们. 绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/share/ ...

  7. LNMP应用

    1.LNMP架构概述 LNMP就是Linux+Nginx+MySQL+PHP Linux作为服务器的操作系统 Nginx作为Web服务器 PHP作为解析动态脚本语言 MySQL即为数据库 Nginx服 ...

  8. 递归与树的写法-多种支付的设计-支付的接通-celery订单的回退实现

    递归与树的写法 data: data=[ {"cat_id":1,"name":"北京","parent_id":0}, ...

  9. console.log和alert的区别

    alert是同步的,如果不关闭弹出框,js代码就不会继续执行下去,这时候浏览器啥都干不了. console.log不会打断js的执行. 当要输出几十几百条信息的时候还是得用console.log,而且 ...

  10. Linux-proc文件系统介绍

    1.操作系统级别的调试 (1).简单程序单步调试 (2).复杂程序printf打印信息调试 (3).框架体系日志记录信息调试 (4).内核调试的困境 2.proc虚拟文件系统的工作原理 (1).Lin ...