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

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

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

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

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

from wtforms importForm,StringField,IntegerFieldfrom wtforms.validators importLength, NumberRange, DataRequiredclassSearchForm(Form):

q= StringField(validators=[DataRequired(), Length(min=1,max=30)])#内置的验证器,validators提供的是一个数组

page = IntegerField(validators=[NumberRange(min=1,max=99)],default=1)

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

classYuShuBook:

per_page= 15 #定义一个类变量来存储,正确的做法是把它写到配置文件中去,因为可能需要更改每页的记录数

@classmethoddef 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

classYuShuBook:

@classmethoddef 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)returnresult

@staticmethoddefcalculate_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 importColumn, Integer, String#通过模型在数据库中自动生成数据表,使用sqlalchemy,它并不是flask所特有,是一个第三方包#Flask_SQLAlchemy对sqlalchemy进行了封闭,提供了更加人性化的api来操作sqlalchemy

classBook():

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))defsample(self):pass

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

视频09:

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

from flask_sqlalchemy importSQLAlchemy

db=SQLAlchemy()classBook(db.Model):

id= Column(Integer, primary_key=True, autoincrement=True)

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

from flask importFlaskfrom app.web.book import web#1.导入蓝图模块web

from app.models.book import dbdefcreate_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() #把所有模型映射到数据库中去returnapp#2.把蓝图注册表flask核心对象中

defregister_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值