1.B/S项目最基本的原理:基于请求和响应 browser浏览器/server服务器
2.浏览器向服务器发送请求,服务器响应浏览器
3.Flask和Django一样都是web框架用于制作B/S网页程序
4.flask中需要下载扩展包
安装指令 pip install ***
扩展脚本包 flask_script Manager
操作数据库 flask_sqlalchemy SQLAlchemy
迁移数据库 flask_migrate Migrate MigrateCommand
5.安装虚拟环境
pip install virtualev/virtualenvwrapper
mkvirtualenv myflask;创建虚拟环境
rmvirtualenv myflask;删除虚拟环境
activate myflask;激活虚拟环境
在虚拟环境里面可以安装多个版本的Django或者Flask
workon myflask;进入虚拟环境
pip list 展示虚拟环境中的配置信息
6. 创建flask项目
从falsk中导入Flask类
from flask import Flask
实例化Flask类
app=Flask(__name__)
用装饰器实现路由跳转
@app.route('/')
函数页面显示内容 以及渲染模板
def index():
username='幼姿沫'
password='123456'
msg='登陆页面成功'
login_dict={
"name":"易烊千玺",
"age":"20",
"gender":"男"
}
1.直接跳转到信息页面
return 'first Flask Object'
2.跳转页面+参数
return render_template('index.html',username=username,password=password,msg=msg)
#json格式
login_dict={
"name":"易烊千玺",
"age":"20",
"gender":"男"
}
#jsonify将字典格式转化为了字符串形式
for i,j in login_dict.items():
print(jsonify(login_dict),i,j)
3.return jsonify(login_dict)
页面效果展示:
{
"age": "20",
"gender": "\u7537",
"name": "\u6613\u70ca\u5343\u73ba"
}
#控制台显示内容
name 易烊千玺
age 20
gender 男
4.路径重定向 跳转到某个网页地址 也可以是网络地址
return redirect('http://www.baidu.com')
url_for的作用是路径反向解析
return redirect(url_for(函数名))
运行flask项目
if __name__=='main':
app.run(debug=True)
7.配置信息类
第一种方法
class Config(object):
DEBUG=True
PORT=6000
SQLALCHEMY_DATABASE_URI='mysql://username:password@ip地址:端口号/数据库名称'
SQLALCHEMY_TRACK_MODIFICATIONS=True
SQLALCHEMY_COMMIT_ON_TEAR=True
SQLALCHEMY_ECHO=True
#从上面读取配置信息
app.config.from_object(Config)
第二种方法
从配置文件中加载配置信息
config.ini
Debug=True
app.config.from_pyfile('config.ini')
第三种方法
在运行命令上直接添加配置信息
if __name__=='main':
app.run(debug=True,port=8000)
8.路由传参数
[email protected]('/路径/<类型:变量>')
#根据id找到用户资料 ----> id
@app.route('/userinfo/')
def userinfo(id):
print('id * ', id)
return 'id * %s' % id
#页面展示
详情展示
2.请求类型get/post
get: 查询
post: 增加
#请求只能通过ajax或者测试工具模仿
put: 修改
delete: 删除
9.转换器的本质 通过正则表达式来匹配路由地址
#参数只是接受三位整数
@app.route('/users/("\d{3}"):num')
#路由中参数为手机号码
@app.route('/users/自定义转换器<("1[3 4 5 6 7 8]\d{9}"):phone>')
自定义转换器
实现步骤
1.继承BaseConverter 重写父类中的初始化方法
class MyReConverter(BaseConverter):
def __init__(self,url_map,regex):
super(MyReCoverter,self).__init__(url_map)
self.regex=regex
2.将自己的转换器添加到默认的转换器字典中
app.url_map.converters['re']=MyReConverter
3.用自定义转换器,实现自定义规则的匹配
#验证数字为三位整数
@app.route('/checkscore/')
def check_score(num):
print('成绩为 * %s' % num)
return '您的成绩为 * %s ' % num
flask中默认的两个初始化模块 werkzeug jinja2
#用自定义转换器验证手机号码的规则
@app.route('/checkphone/')
def checkphone(phone):
print('手机号码为 * ',phone)
return '手机号码为 * %s' % phone