学习python-20191208(1)-Python Flask高级编程开发鱼书_第03章_数据与flask路由
视频01:
略。。。。。。
————————————————————————————————————————————————————————————
视频02:
搜索需要外部数据源,也就是需要外部的API。
图书数据搜索用到的几个地址:
1、关键字搜索http://t.yushu.im/v2/book/searh?q={}&start={}&ount={}
2、isbn搜索 http://t.yushu.im/v2/book/isbn/{isbn} 把参数放在url路径中
3、豆瓣API https://api.doubn.com/v2/book 有API访问频次限制,大概每小时150次,超过后你的IP地址会被暂时封闭一段时间
没有不控制访问频率的API,没有控制,就可能会被别人搞瘫痪了。
————————————————————————————————————————————————————————————
视频03:
本视频学习的几个关键点:
1、学习在url路径中传递参数的方式
@app.route('/book/search/<q>/<page>') 接收参数
def search(q,page): 传入参数
2、q.isdigit()函数可以判断当前字符中是不是全为数字
3、q.replace('-','')函数可以把当前字符串中的短横线替换成空格
4、在有多个条件时,条件的先后顺序是会影响执行效率的,要把大概率出现false的条件放在前面,前面的条件判断为false后,它后面的其他条件就不会再执行了。
如果在条件判断时有耗时操作,如要查询数据库,这样的耗时条件应该尽量放到后面,因为越往后它执行的可能性越小
# 在url路径中传递参数 <q>/<page>
@app.route('/book/search/<q>/<page>')
def search(q,page):
'''
q:普通关键字 或 isbn
isbn目前有两种方式:1.isbn13——它是由13个0至9的数字组成;2.isbn10——由10个0到9的数字组成,中间含有一些短横线 -
page
'''
isbn_or_key = 'key'
if len(q) == 13 and q.isdigit(): #q.isdigit()函数可以判断当前字符中是不是全为数字
isbn_or_key = 'isbn'
short_q = q.replace('-','')
# 在有多个条件时,条件的先后顺序是会影响执行效率的,要把大概率出现false的条件放在前面,如果是false那它后面的其他条件就不会再执行了。
# 如果在条件判断时有耗时操作,如要查询数据库,这样的耗时条件应该尽量放到后面,因为越往后它执行的可能性越小
if '-' in q and len(short_q)==10 and short_q.isdigit(): # q.replace('-','')函数可以把当前字符串中的短横线替换成空格
isbn_or_key = 'isbn'
pass
————————————————————————————————————————————————————————————
视频04:
本视频学习的几个关键点:
1、把判断的代码部分提取成一个函数,以提高执行代码的复用性、可读性。
2、好的函数名,要能体现函数的基本功能。在函数体内部最上方可书写函数说明,要养成这种良好的编程习惯。
#新建一个名叫heler.py的文件,单独把抽取出来的条件语句封闭成一个函数,然后在视图函数中调用它
def is_isbn_or_key(word):
'''
当前函数说明:
:param word:
:return:
'''
isbn_or_key = 'key'
if len(word) == 13 and word.isdigit():
isbn_or_key = 'isbn'
short_word = word.replace('-','')
if '-' in word and len(short_word)==10 and short_word.isdigit():
isbn_or_key = 'isbn'
return isbn_or_key #因为这是一个函数,所以要把结果返回回去
from helper import is_isbn_or_key # 实例化flask对象
app = Flask(__name__) # 视图函数是项目的起点,阅读或维护代码时也是从这里开始,如果视图函数特别长而乱,维护起来是个很大的问题
# 看源代码,一定要分层去看,第一遍是理清源代码的结构,先不要关注细节
@app.route('/book/search/<q>/<page>')
def search(q,page):
isbn_or_key = is_isbn_or_key(q) # 用run方法,启动web服务器
if __name__ == '__main__':
app.run(host='0.0.0.0',debug=True ,port=5000)
————————————————————————————————————————————————————————————
视频05:
本视频学习的几个关键点:
1、在python中发送http请求有两种方式:
(1)urllib 不用安装,直接使用 from urllib import request;
(2)requests 这个第三方库来实现,它需要安装一下(做项目时推荐使用)
2、Ctrl+Alt+I代码自动缩进
3、用三联表达式来简化代码
4、r = requests.get(url) r.status_code得到状态码 r.json()把得到的数据格式化为json r.text按字符串返回
import requests #创建一个名为HTTP的类
class HTTP:
def get(self,url,return_json=True):
r = requests.get(url)
# r中包含了状态码、headers信息等
# 用三联表达式来简化代码
if r.status_code != 200:#取状态码
return {} if return_json else ''
return r.json() if return_json else r.text # if r.status_code == 200:#取状态码
# if return_json:
# return r.json()#json格式的通用返回方法
# else:
# return r.text
# else:
# if return_json:
# return {}
# else:
# return ''
学习python-20191208(1)-Python Flask高级编程开发鱼书_第03章_数据与flask路由的更多相关文章
- 学习python-20191208(2)-Python Flask高级编程开发鱼书_第03章_数据与flask路由
视频06: 定义静态方法的两种方式: 1.在方法上方加上装饰@staticmethod 2.在方法上方加上装饰@classmethod 方法中要加参数cls 如:def search_by_isb ...
- 学习python-20191203-Python Flask高级编程开发鱼书_第02章 Flask的基本原理与核心知识
视频01: 做一个产品时,一定要对自己的产品有一个明确的定位.并可以用一句话来概括自己产品的核心价值或功能. 鱼书网站几个功能 1.选择要赠送的书籍,向他人赠送书籍(价值功能,核心价值的主线): 2. ...
- 学习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 这个算法名字的由来是因为在执行算法的时候越小的元素会经由交换慢慢"浮"到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧 ...
随机推荐
- Java线程——线程之间的通信
Java中多线程间的通信是怎么实现的? 线程通信的方式: (1)共享变量 线程之间的通信可以通过发送信号,发送信号的一个简单方法就是再共享的对象里面设置信号值.线程A在一个同步块中设置boolean型 ...
- 吴裕雄--天生自然MySQL学习笔记:MySQL 导入数据
1.mysql 命令导入 使用 mysql 命令导入语法格式为: mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql) 实例: # mysql -uroot -p12 ...
- ACwing算法基础课听课笔记(第一章,基础算法一)(二分)
二分法: 在看这个视频前,我对于二分法是一头雾水的,又加上这个算法平常从来没写过所以打了一年了还没正式搞过.视频提到ACwing上的一道题,我用自以为聪明的方法去做,结果TLE了,实在丢人,不说了,开 ...
- SpringContextHolder类
1.通常使用SpringContextHolder类获取bean实例: 解决: 如果要在静态方法中调用某一bean的方法,那么该bean必须声明为static的,但正常情况下@Autowired无法注 ...
- es和数据库关系对比
es类比传统关系型数据库: Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -& ...
- Linux-IO多路复用select函数实践
#include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/time.h ...
- Django的模板变量
变量的值来自context中的数据字典, 类似于字典对象的keys到values的映射关系. 变量是被}}和{{括起来的部分 变量看起来就像是这样: {{ variable }}. 当模版引擎遇到一个 ...
- Cannot find tomcat目录/bin/setclasspath.sh This file is needed to run this program
首先如果直接使用 root 用户来启动 tomcat 的话,是可以正常启动的. 但是我们在 Linux 中使用普通用户启动 tomcat 报了如下错误 Cannot find /developer/a ...
- Python基础学习一
Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...
- JQuery获取当前屏幕的高度宽度的实现代码
<script type="text/javascript"> $(document).ready(function() { alert($(window).heigh ...