flaskday1

一、环境搭建、项目搭建

1.创建虚拟环境flaskenv
virtualenv --no-site-packages -p
安装flask
2.项目搭建
创建day01文件夹
建立第一个flask项目hello.py文件

二、使用flask_script修改启动ip和端口

from flask import Flask
from flask_script import Manager
from app.views import blue
app = Flask(__name__)


# 2.绑定蓝图blue和app的关系
app.register_blueprint(blueprint=blue,url_prefix='/app')
# 将flask对象交给Manager管理,并且启动方式修改为manager.run()
manager = Manager(app=app)


# 设置secret_key
app.config['SECRET_KEY'] = '123'
if __name__ == '__main__':
    # 修改启动的ip和端口、debug模式
    # app.run(host='0.0.0.0',port=8080,debug=True)
    # python xxx.py runserver -h 0.0.0.0 -p 8080 -d
    manager.run()

三、路由匹配规则

1.:默认接收的类型是str
2.:指定id的类型为str
3.:指定id的类型为int
4.:指定id的类型为float
5.:指定接受的path为URL的路径

四、flask_blueprint蓝图的使用

什么是蓝图

在Flask项目中可以用Blueprint(蓝图)实现模块化的应用,使用蓝图可以让应用层次更清晰,开发者更容易去维护和开发项目。蓝图将作用于相同的URL前缀的请求地址,将具有相同前缀的请求都放在一个模块中,这样查找问题,一看路由就很快的可以找到对应的视图,并解决问题了。

安装蓝图

pip install flask-blueprint

导入 blueprint

from flask import Blueprint

在views.py文件中中

# 1.获取蓝图对象,指定蓝图别名为app
blue = Blueprint('app',__name__)

在manager.py文件中

# 2.绑定蓝图blue和app的关系
app.register_blueprint(blueprint=blue,url_prefix='/app')
# 将flask对象交给Manager管理,并且启动方式修改为manager.run()
manager = Manager(app=app)

五、跳转和反向解析

1.硬编码跳转

return redirect('/app/')

2.反向解析redirect(url_for('蓝图别名.跳转的函数名'))

return redirect(url_for('app.hello_world'))

六、请求与响应

url:完整的请求地址
base_url:去掉GET参数的url
host_url:只有主机和端口号的url
path:路由中的路径
method:请求方法
remote_addr:请求的客户端的地址
args:GET请求参数
form:POST请求参数
files:文件上传
headers:请求头
cookies:请求中的cookie

@blue.route('/request/',methods=['GET','POST','PUT'])
def get_request():
    # 请求上下文request
    # 获取GET请求传递的参数,request.args.get(key)/request.args.getlist(key)
    # 获取POST,PUT,PATCH,DELETE请求传递的参数,request.form.get(key)/request.form.getlist(key)
    # 判断HTTP请求方式:method.request
    pass


@blue.route('/response/',methods=['GET'])
@is_login
def get_response():
    # 创建响应
    res = make_response('人生苦短,我用Python',200)
    # 响应绑定cookies,set_cookie(key,value,max_age,expires)
    # 删除cookie  delete_cookie(key)
    res_index = render_template('index.html')
    res = make_response(res_index,200)
    return res

七、异常抛出abort和捕获

导入abort

@blue.route('/index/',methods=['GET'])
def index():
    a = int(request.args.get('a'))
    b = int(request.args.get('b'))
    try:
        a/b
    except Exception as e:
        print(e)
        # 抛出错误
        abort(500)
    return render_template('index.html')

自动抛出异常:abort(状态码)

抛出错误
abort(500)

捕获异常处理:errorhandler(状态码),定义的函数中要包含一个参数,用于接收异常信息

@blue.errorhandler(500)

def error500(excption):
return '捕捉异常,错误信息为:%s' % excption

八、使用session实现模拟登陆

登录验证 存入session值

session['login_status'] = 1

在manager.py文件中设置加密
设置secret_key

app.config['SECRET_KEY'] = '123'
登陆验证装饰器

from functools import wraps
from flask import redirect,url_for,request,session


def is_login(func):
    @wraps(func)
    def check(*args,**kwargs):
        id = session.get('login_status')
        if id != 1:

            return redirect(url_for('app.login'))
        else:
            return func(*args,**kwargs)
    return check

你可能感兴趣的:(flaskday1)