flask是一款轻量级的python web框架,适合新手用来学习
附上flask官网教程文档:http://docs.jinkan.org/docs/flask/quickstart.html
目录
安装依赖包
创建处理文件
运行程序
使用flask框架前,需要安装一些依赖扩展支持运行
第一个安装框架核心:
pip install Flask
第二个安装模板引擎:
pip install Jinja2
第三个安装HTTP服务工具:
pip install aiohttp
第四个安装数据库驱动:
# 两种mysql驱动,第一种PyMYSQL
pip install PyMYSQL
#第二种mysql-connector
pip install mysql-connector
第五个安装数据库模型操作工具:
pip install Flask-SQLAlchemy
其他安装的有:
pip install request
在一个空白目录中,依次创建app.py、models.py、exts.py、config.py和templates目录
1.编辑app.py置入一下代码:
from flask import Flask, request, url_for, redirect, render_template, session
from exts import db
from models import user
import os,config
# 实例化flask
app = Flask(__name__)
# 将config文件作为配置
app.config.from_object(configs)
# 初始化db
db.init_app(app)
@app.route('/')
def index():
# 赋值session
session['userinfo'] = {'name': '张三'}
# 数据库查询测试
res = user.query.filter(user.id==1).all()
list_res = {}
# 遍历结果集
for i in res:
# 打印结果
print(str(i.id) + '----' + i.name + '---' + str(i.age))
return '处理完成'
# 注册路由
@app.route('/user/', methods=['GET', 'POST'])
def getuserId(id):
# 转换数据类型
id = int(id)
# 判断请求类型测试
if request.method == 'POST':
return 'post info'
else:
if id == 1:
# 重定向跳转测试
return redirect('http://www.baidu.com')
elif id == 2:
# 渲染指定模板测试
return render_template('test.html', name='张三')
elif id == 3:
# 判断session是否存在
if 'userinfo' in session:
return 'you login success,username:' + session['userinfo']['name']
else:
# 重定向,反向url生成
return redirect(url_for('index'))
else:
# 得到动态参数
return 'userId:' + str(id)
if __name__ == '__main__':
# 生成session秘钥
app.secret_key = os.urandom(10)
# 运行服务,这里host是指绑定所有本地ip,port是绑定的端口
app.run(host='0.0.0.0', port=80)
2.编辑config.py:
# APP调试模式开关
DEBUG = True
'''
数据库配置
'''
# 数据库类型
SQL = 'mysql'
# 数据库驱动
DRIVER = 'pymysql'
# 数据库主机地址
HOST = '127.0.0.1'
# 数据库端口
PORT = 3306
# 数据库用户名
USERNAME = 'root'
# 数据库密码
PASSWORD = 'root'
# 数据库名
BASENAME = 'test'
# 编码类型
CHARSET = 'utf8'
# 数据库配置最终变量内容
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset={}" .format(SQL, DRIVER, USERNAME, PASSWORD, HOST, PORT, BASENAME, CHARSET)
SQLALCHEMY_TRACK_MODIFICATIONS = False
3.编辑exts.py:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
# 独立的文件引入db是为了models.py和app.py引入不冲突,不然会导致循环引入
4.编辑models.py:
from exts import db
# user表模型类
class user(db.Model):
# 操作的表名称
__tablename__ = 'user'
# 字段信息
id = db.Column(db.Integer,primary_key=True,autoincrement=True)
name = db.Column(db.String)
age = db.Column(db.Integer)
5.在templates目录下新建test.html,内容如下:
Title
hello,{{name}}
在命令行中定位到项目根目录,输入命令运行程序:
python app.py
调试器会回显:
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Restarting with stat
* Debugger is active!
* Debugger PIN: 250-453-509
* Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
这里注意几个内容,第一个如果启动失败,检查一下端口是否被占用,这里用的80端口,你也可以修改成其他,在app.py的最后run的地方可以修改端口,第二个就是这里写的默认访问会操作数据库的,所以你得按照config.py里面的数据库配置,确保mysql服务是正常且账户密码一致
然后浏览器中输入:http://127.0.0.1,即可看见“处理完成”字样,命令行会打印相关查询内容
输入“http://127.0.0.1/user/1”,测试重定向。
输入“http://127.0.0.1/user/2”,测试模板渲染
输入“http://127.0.0.1/user/3”,测试session检测,没有session会跳转到index