视频06:

1、自动导包快捷键——默认为alt + enter 键组合          选中的字符由小写变为大写——Ctrl + Shift + U键组合

2、DataRequired()——防止用户只传入一个空格

3、使用组合验证器的方式来完成校验。

  从中学习构建代码的思想:把独立的功能拆开,写到不同的函数或不同的对象中去,使用时则可任意去组合这些函数和对象,来实现我们要的功能。

from wtforms import Form,StringField,IntegerField
from wtforms.validators import Length, NumberRange, DataRequired class SearchForm(Form):
q = StringField(validators=[DataRequired(), Length(min=1,max=30)])#内置的验证器,validators提供的是一个数组
page = IntegerField(validators=[NumberRange(min=1,max=99)],default=1)

4、定义一个类变量,并在本类的方法中使用它(当前不推荐,如下代码仅为说明类变量的定义及使用)

class YuShuBook:
per_page = 15 #定义一个类变量来存储,正确的做法是把它写到配置文件中去,因为可能需要更改每页的记录数 @classmethod
def search_by_keyword(cls,self,keyword,page=1):
url = cls.keyword_url.format(keyword,cls.per_page,(page-1)*cls.per_page)
result = HTTP.get(url)
return result

5、要获取配置文件中的配置信息,要先导入current_app

from flask import current_app
from flask import current_app  # 要获取配置文件中的配置信息,因不能直接使用flask核心对象,所以要先导入current_app

class YuShuBook:

    @classmethod
def search_by_keyword(cls,self,keyword,page=1):
url = cls.keyword_url.format(keyword,cls.current_app.config['PER_PAGE'], cls.calculate_start(page))
result = HTTP.get(url)
return result @staticmethod
def calculate_start(page):
# 把如下语句单独定义成一个函数,是一个好的习惯,提高代码可读性
return (page - 1) * current_app.config['PER_PAGE']

6、拆分配置文件

把配置文件分成两个,secure.py 和 setting

secure中存放——涉及安全性的配置信息

setting中存放——不涉及安全性的配置信息,生产环境和开发环境中配置相同的信息也放这里

————————————————————————————————————————————————————————————

视频07:

1、控制HTTP请求的数量

把数据在本地数据库中缓存起来。这样查询时,首先从本地数据库查,以减少请求数量。

2、在Navicat for MySQL中,手动新建一个mysql数据库

字符集选:utf8mb4 -- UTF-8 Unicode  即最后一个选择

排序规则:utf8mb4_general_ci             即第一个选项

3、数据表创建的三种方式:

Database first  Model first  Code first  (推荐) 

————————————————————————————————————————————————————————————

视频08:

1、模型层   MVC中的M层 (models);

2、安装Flask-SQLAlchemy :   pipenv install Flask-SQLAlchemy  或在pycharm的settings中安装;

3、使 sqlalchemy 创建模型类:

from sqlalchemy import Column, Integer, String

# 通过模型在数据库中自动生成数据表,使用sqlalchemy,它并不是flask所特有,是一个第三方包
# Flask_SQLAlchemy对sqlalchemy进行了封闭,提供了更加人性化的api来操作sqlalchemy class Book():
id = Column(Integer, primary_key=True, autoincrement=True)
title = Column(String(50), nullable=False)
_author = Column('author', String(30), default='未名')
pages = Column(Integer)
isbn = Column(String(15), nullable=False, unique=True) #指定isbn在表中不能重复,映射为数据表时会为此列加一列索引
image = Column(String(50)) def sample(self):
pass

————————————————————————————————————————————————————————————

视频09:

1、把数据模型映射到数据库中去,首先需要实例化一个SQLAlchemy对象。

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Book(db.Model):
id = Column(Integer, primary_key=True, autoincrement=True)

2、SQLAlchemy和Flask核心对象的关联,代码在app\__init__.py中书写,所以有flask插件都是这样进行关联的

from flask import Flask
from app.web.book import web# 1.导入蓝图模块web
from app.models.book import db def create_app():
app = Flask(__name__)
app.config.from_object('app.secure')
app.config.from_object('app.setting')
# 3.在app中调用蓝图注册函数
register_blueprint(app) db.init_app(app)
   db.create_all() #把所有模型映射到数据库中去
return app # 2.把蓝图注册表flask核心对象中
def register_blueprint(app):
app.register_blueprint(web)# 注册蓝图

3、配置数据库连接,代码在app\secure.py中书写,SQLAlchemy是支持多数据连接,当前仅连接一个数据库

SQLALCHEMY_DATABASE_URI = 'mysql+cymysql://root:ddh123@localhost:3306/fisher'

因为是用cymysql进行连接,所以要先安装cymysql : pipenv install cymysql


学习python-20191230(1)-Python Flask高级编程开发鱼书_第04章_应用、蓝图与视图函数的更多相关文章

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

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

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

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

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

    视频06: 定义静态方法的两种方式: 1.在方法上方加上装饰@staticmethod 2.在方法上方加上装饰@classmethod  方法中要加参数cls  如:def search_by_isb ...

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

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

  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和1200PLC中scl高级编程中的应用

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

  9. flask 高级编程 上下文与栈(转)

    转: https://www.cnblogs.com/wangmingtao/p/9372611.html 22.上下文与出入栈 22.1 请求过程 请求过来,flask会实例化一个Request C ...

随机推荐

  1. SQL基础教程(第2版)第7章 集合运算:7-1 表的加减法

    第7章 集合运算:7-1 表的加减法 ● 集合运算就是对满足同一规则的记录进行的加减等四则运算.● 使用UNION(并集). INTERSECT(交集). EXCEPT(差集)等集合运算符来进行集合运 ...

  2. SQL优化——ORACLE

    SQL优化——ORACLE 索引是由Oracle维护的可选结构,为数据提供快速的访问.准确地判断在什么地方需要使用索引是困难的,使用索引有利于调节检索速度. 当建立一个索引时,必须指定用于跟踪的表名以 ...

  3. MacOS常用快捷键

    command+空格 打开Spotlight command+m 最小化当前窗口 control+command+f     最大化当前窗口 command+q                    ...

  4. Linux(CENTOS7) Tomcat服务成功发布但局域网浏览器无法访问

    问题 : 我在linux搭建了一个tomcat服务器,tomcat开启后,发现在局域网浏览器上无法访问该tomcat,浏览器报无法访问服务器错误,我查看了tomcat的日志,路径..../tomcat ...

  5. js 动画滚动到指定位置 ES6

    ### 开始 ### 写一个自动滚动过度到指定位置的一个函数 通过Class进行封装 /** * 滚动动画过度 * @param {Object} position 定位(只支持Y轴) * @para ...

  6. Elastic ik插件配置热更新功能

    ik github地址:https://github.com/medcl/elasticsearch-analysis-ik 官网说明: 热更新 IK 分词使用方法 目前该插件支持热更新 IK 分词, ...

  7. beta函数与置信度估计

    可信度的估计 二项分布中的\(p\) 服从Beta分布 $ {\rm beta}(\alpha, \beta)$, 密度函数 \(\frac1{B(\alpha, \beta)} x^{\alpha- ...

  8. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第一天】

    本人做过一年的MATLAB编程和简单维护过VB和C++的项目.是跟着网上获得的黑马的Java双元视频课来自学入门Java知识和常用框架的使用. 淘淘商城(SpringMVC+Spring+Mybati ...

  9. PAT Advanced 1015 Reversible Primes (20) [素数]

    题目 A reversible prime in any number system is a prime whose "reverse" in that number syste ...

  10. sybase连接失败 JZ006: Caught IOException: java.net.ConnectException处理方式

    windows系统下的处理办法: 1.查找端口为5000的进程的pid: 在cmd窗口中输入 netstat -ano 我这里是2324. 打开任务管理器,找到pid是2324的进程,结束进程. 打开 ...