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/<id>', 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,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
hello,{{name}}
</body>
</html>

运行程序

在命令行中定位到项目根目录,输入命令运行程序:

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