学习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、改造项目,整理结构
学习python-20191208(2)-Python Flask高级编程开发鱼书_第03章_数据与flask路由的更多相关文章
- 学习python-20191203-Python Flask高级编程开发鱼书_第02章 Flask的基本原理与核心知识
视频01: 做一个产品时,一定要对自己的产品有一个明确的定位.并可以用一句话来概括自己产品的核心价值或功能. 鱼书网站几个功能 1.选择要赠送的书籍,向他人赠送书籍(价值功能,核心价值的主线): 2. ...
- 学习python-20191208(1)-Python Flask高级编程开发鱼书_第03章_数据与flask路由
视频01: 略...... ———————————————————————————————————————————————————————————— 视频02: 搜索需要外部数据源,也就是需要外部的A ...
- 学习python-20191230(1)-Python Flask高级编程开发鱼书_第04章_应用、蓝图与视图函数
视频06: 1.自动导包快捷键——默认为alt + enter 键组合 选中的字符由小写变为大写——Ctrl + Shift + U键组合 2.DataRequired()——防止用 ...
- 学习python-20191217(1)-Python Flask高级编程开发鱼书_第04章_应用、蓝图与视图函数
视频01: flask框架:最上层是app,它就像一个插线板一样,比如可以插入蓝图,还可以插入其他各种flask插件. 每个蓝图又可以插入很多视图函数,并可指定静态文件夹和模板文件夹. 好的代码结构, ...
- Python Flask高级编程
第1章 课程导语介绍课程的内容1-1 开宗明义 试看1-2 课程维护与提问 第2章 Flask的基本原理与核心知识本章我们首先介绍Python官方推荐的最佳包与虚拟环境管理工具:Pipenv.接着我们 ...
- 《Python编程从入门到实践》_第六章_字典
一个简单的字典 #用户信息 user = {','city':'shanghai'} print(user['name']) print(user['age']) print(user['city'] ...
- 《Python编程从入门到实践》第二章_变量和简单数据类型
什么是变量呢? 举例: >>> message = "Hello,Python!" >>> print (message) Hello,Pyth ...
- python高级编程之描述符与属性03
# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #属性Property #提供了一个内建描述符类型,它知道如何将一个 ...
- 程序思想中的冒泡法在python和1200PLC中scl高级编程中的应用
冒泡排序:是计算机科学领域里面的一种算法. header 这个算法名字的由来是因为在执行算法的时候越小的元素会经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧 ...
随机推荐
- 用CNN及MLP等方法识别minist数据集
用CNN及MLP等方法识别minist数据集 2017年02月13日 21:13:09 hnsywangxin 阅读数:1124更多 个人分类: 深度学习.keras.tensorflow.cnn ...
- 解析java实体类
对java实体类的众多理解: A .就是属性类,通常定义在model层里面 B. 一般的实体类对应一个数据表,其中的属性对应数据表中的字段. 好处: 1.对对象实体的封装,体现OO思想. 2.属性可以 ...
- 关于gc中对象回收算法的认识
之前学习java时,笔者看到很多学习资料说,gc判断object存活与否的算法是:给对象添加一个引用计数器,每当有一处地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,当对象计数清零时,对象 ...
- 吴裕雄--天生自然 PHP开发学习:MySQL 读取数据
<?php $servername = "localhost"; $username = "root"; $password = "admin& ...
- [原]排错实战——解救加载调试符号失败的IDA
原调试IDA排错troubleshootsymbolspdbsysinternalprocess monitor 缘起 最近想借助IDA逆向一个函数.在windows下,调试器(比如vs, windb ...
- js操作元素导致元素错位和大小改变
使用js循环的方式批量控制元素的大小时结果往往不尽如人意. 我总结了一条规律 在一个循环体内不可以同时存在一下两种操作,否则容易导致元素错位或大小改变: 1.对元素的offsetWidth.offse ...
- RL78 RAM GUARD Funtion
1.段设置 在Section段增加 My_ProtectRAM_n段, 段地址为RAM起始地址+256字节 2.变量定义 #pragma section bss My_ProtectRAM/*My_P ...
- mysql自定义函数初始化数据:init_data()
DELIMITER $$ USE `local_hnyz`$$ DROP FUNCTION IF EXISTS `init_data`$$ CREATE DEFINER=`root`@`localho ...
- elasticsearch min_hash 应用分析
需求作相似文本查询 爬虫作页面去重,会用到simhash,第一个想到的是用simhash算法 但在现有数据集(elasticsearch集群)上用simhash,成本高,simhash值还好计算,不论 ...
- sockaddr_in 转成string
string strAcceptIp = inet_ntoa(remoteAddr.sin_addr);