Flask基础——蓝图,动态传参

Flask是一个和django类似的框架
不同之处在于:
django——完善完整高集成的框架
flask——不包含数据,框架,抽象库,等,需要自己去配置

安装


  1. 安装自己的虚拟环境
  2. 安装flask

pip install flask

写入

from flask import Flask

# 初始化,--name--代表主模块名或者包
app = Flask(__name__)
# 路由
@app.route('/')
def hello():
    # 视图函数
    return 'HELLO,world'
if __name__ == '__main__':
    # 启动
    app.run(debug=True) 

大致分为初始化,视图和启动

运行(方法一)

右键直接run或者python xx.py
默认127.0.0.1:5000端口

run的参数

run里面有参数:
debug=True 这样可以将错误显示在浏览器中
port=’自己端口号’ 修改端口号
host = ‘0.0.0.0’ 都可以访问 ip

app.run(debug=True)

修改运行方式(方法二)

修改成类似django的用法 —— python manage runsever
1. 安装
pip install Flask-Server
2. 配置初始化

from flask_script import Manager

app = Flask(__name__)

manager = Manager(app=app)

3 修改启动参数

if __name__ == '__main__':
    # 启动
    # app.run(debug=True)
    manager.run()

运行参数

与上面不一样的是不在run里面写参数,而是类似django一样

python xxx.py runserver -p(端口号) -h(IP) -d(debug模式)

同理,也可以开启debug模式,这样就可以打断点了
这里写图片描述

蓝图(类似用来管理urls)

将url、启动和方法从一个py文件分离开

pip install flask-blueprint

1. 初始化

单独创建一个文件夹写入,url和views方法的
创建APP文件夹,创建views.py,写入蓝图和方法

from flask import Blueprint

blue = Blueprint('first', __name__)
把@app改成@blue
@blue.route('/')
def hello():
    # 视图函数
    return 'HELLO,world'

2. 路由注册

在该文件下创建init文件这里写图片描述
相当于将app重新定义

def xx():
app = Flask(__name__)
    app.register_blueprint(blueprint=blue)
    return app

然后启动页面——可以改成manage。py——这样启动的时候更类似与django

from APP import xx
blue = xx()
manager = Manager(app=blue)
if __name__ == '__main__':
    manager.run()

指定路径

如果页面或者层叠样式加载不出来可以在init里面配置:

import os
# os.path.dirname表示上级路径
# os.path.abspath(__file__)表示当前路径
# join表示说明在哪个路径
# Flask里面是固定写法
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    templa = os.path.join(BASE_DIR, 'templates')
    stat = os.path.join(BASE_DIR, 'static')
    app = Flask(__name__, template_folder=templa, static_folder=stat)

等于告诉电脑你配置的地址具体在哪里,让它可以找到
这里写图片描述

动态传参

和django不一样,这个不需要配置url,然后views,再用正则(d+)传参的过程
app中传入<>,然后def中引用
默认string类型
可以用int,float等

# 动态传入url参数
@app.route('/he/<name>/')
def he(name):
    # 传入的name为字符串
    print(name)
    return 'hello %s' % name

这样在浏览器中写入
127.0.0.1/he/xxx 就可以展示出xxx了
注意默认传入的为str类型
如果需要指定传入的参数为int类型

int类型

# 修改后只能传入数字,否则报错
@app.route('/hello/<int:name>/')
def hello_int(name):
    # 传入的name为整数
    print(name)
    return 'hello %s' % name

path:‘’/‘’也是当做字符串返回

@blue.route('/getpath/<path:ff>')

这里写图片描述

uuid 返回的是一个随机的很长的字符串

这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_41781877/article/details/80308847