day01

2018-12-17  本文已影响0人  李小萌mmm
管理启动命令
pip install flask-script
from flask_script import  Manager

 manage = Manager(app)
 manage.run()

在命令行写
-h Ip -p端口 -d debug
 python hello.py runserver -h 0.0.0.0 -p 8080 -d


------------------------

 @app.route('/get_uuid/')
def get_uuid():
    import uuid
    return str(uuid.uuid4())


uuid生成唯一标识
4351a188-099e-4840-9f1d-edc720f030e3


-------------------------
使用蓝图定义路由,目的拆分路由
blueprint把实现不同功能的module分开,也就是把一个大的App
分割成各自实现不同功能的module


pip install flask-blueprint
建立一个app文件夹再建立一个views.py文件

views.py
from flask import Blueprint
# 模块化管理路由
# 第一步 生成蓝图对象
blueprint = Blueprint('first',__name__)

@blueprint.route('/')
def hello():
    return 'hello'



manage.py
from flask import  Flask
from flask_script import Manager
from app.views import  blueprint
app = Flask(__name__)
# 第二步: 注册蓝图
#url_prefix 路由前缀
app.register_blueprint(blueprint=blueprint,url_prefix='/app')


manager = Manager(app)
if __name__ == '__main__':
    manager.run()


------------------
跳转
views.py

from flask import Blueprint, redirect,url_for


# 1. 定义路由跳转到hello方法

@blueprint.route('/redirect/')
def my_redirect():
    # redirect跳转  url_for 反向解析
    # first.hello  蓝图第一个参数.跳转的函数名
    return redirect(url_for('first.hello'))

# 2.定义路由跳转到stu方法
@blueprint.route('/redirect_id/')
def stu_redirect():
    return redirect(url_for('first.stu',id=3))






-----------
响应
# 返回一个响应
@blueprint.route('/make_response/')
def my_response():
    # 第一个参数响应内容,第二个参数响应状态码
    res = make_response('<h2>GOOD GOOD</h2>')
    # 设置cookie  key , value, ,max_age以秒为单位, expires以datetime为单位
    res.set_cookie('token', '123456', max_age =6000)
    return res


@blueprint.route('/del_cookie/')
def del_cookie():
    res = make_response('<h2>删除cookie</h2>')
    # 删除cookie
    res.delete_cookie('token')
    return res


-------------------------------
请求方式
# methods定义路由的请求方式 默认是GET
# GET POST PUT PATCH DELETE
@blueprint.route('/req/' , methods=['GET','POST'])
def req():
    # 通过postman测试
    if request.method == 'GET':
        # 获得GET请求中传递的参数 request.args
        # 获得GET请求中name=小明的name参数 request.args.get(key)或request.form.getlist(key)
        return 'lml get'
    if request.method == 'POST':
        # 获得POST请求中传递的参数 request.form
        # 获得值 request.form.get(key) 或request.form.getlist(key)
        return 'lml post'

--------------------------
 登录
@blueprint.route('/login/' , methods=['GET','POST'])
def login():
    if request.method == 'GET':
        return  render_template('login.html')

    if request.method == 'POST':
        # 模拟登录
        username = request.form.get('username')
        password = request.form.get('password')
        if username =='lml' and password=='123':
            # 将键值对作为值保存在客户端
            session['user_id'] = 1
        return redirect(url_for('first.hello'))
 在manage.py进行加密
 app.secret_key ='ntjyjeiyj45p6-43-=0234fk2m3k41mk2'
上一篇下一篇

猜你喜欢

热点阅读