Flask-入门-day96

Flask优势:  1.节省资源 轻量级框架    2.开发简便 速度快
Flask劣势:组件极少 Session   - 第三方组件 非常全 Flask-Session - Flask 更新 组件第三方的 稳定性相对较差

Flask常用模块

from flask import Flask,render_template,redirect,jsonify,send_file

 

 

Flask模块的使用及功能

jsonify

详解:只有用jsonify返回的数据才是json格式的数据类型

from flask import Flask, jsonify, send_file

@app.route("/get_data1")
def get_data1():
    return jsonify({"name":"Alexander.DSB.Li"})

 

 

send_file

详解:服务器上的数据发送给用户,可以是任何类型的数据,如果浏览器不支持的文件用户默认会下载

@app.route("/get_file")
def get_file():
    return send_file("2.mp3")

app.run()

 

 

 

request

详解:获取用户提交的数据

1.args 保存URL中传递的参数数据 to_dict() 字典形式取值
2.form 保存FormData中的数据 to_dict() 字典形式取值
3.method 判断请求方式
4.*path 路由地址
5.*url 访问地址
6.*host 主机地址
7.*host_url 主机访问地址
8.files 保存所有数据中的文件数据
9.**values 保存 URL + FormData 坑!
10.data b""请求体中的原始数据 Content-Type != form-data
11.json # None Content-Type:application/json -> dict()

from flask import Flask,request,render_template
app = Flask(__name__)
app.config['DEBUG'] = True

@app.route('/data',methods=['POST','GET'])  #methods 限制用户的请求方式
def url_data():
    if request.method == 'GET':
        return render_template('form.html')
    else:
        print(request.form.to_dict())   
        return '200 ok'


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

 

 

files的详细用法:

#!/usr/bin/env python
from flask import Flask,request,render_template
app = Flask(__name__)
app.config['DEBUG'] = True

@app.route('/data',methods=['POST','GET'])  #methods 限制用户的请求方式
def url_data():
    if request.method == 'GET':
        return render_template('form.html')
    else:
        print(request.form.to_dict())
        my_file = request.files.get('file')
        my_file.save(my_file.filename)      #不改变接收的文件名称和格式
        #my_file.save('tupian.jpg')  #更改接收的文件的名称及格式
        return '200 ok'


if __name__ == '__main__':
    app.run()
files的详细用法

 

 session

 详解:会话

 

使用方法:

在使用session之前必须有'secret_key'

app.secret_key = "~!@#$%^&*()!@#$%^&*(~!@#$%^&*(!@#$%^&*~!@#$%^&*("

session.get(key)   #获取key
session.pop(key)   #删除key
del session[key]    #删除key
session.clear()       #删除session中所有的值

设置session的有效期:如果没有设置session的有效期。那么默认就是浏览器关闭后过期。如果设置session.permanent=True,那么就会默认在31天后过期。如果不想在31天后过期,那么可以设置`app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(hour=2)`在两个小时后过期。

 

 

 

基于session的装饰器做登录校验:

from flask import Flask, session, render_template, request, redirect

app = Flask(__name__)
#app.config["DEBUG"] = True
app.secret_key = "~!@#$%^&*()!@#$%^&*(~!@#$%^&*(!@#$%^&*~!@#$%^&*("


STUDENT_DICT = {
    1: {'name': 'Old', 'age': 38, 'gender': ''},
    2: {'name': 'Boy', 'age': 73, 'gender': ''},
    3: {'name': 'EDU', 'age': 84, 'gender': ''},
}

def wrapper(func):
    def inner(*args,**kwargs):
        if session.get('username'):
            ret = func(*args,**kwargs)
            return ret
        else:
            return redirect('/login')
    return inner


@app.route('/index')
@wrapper
def index():   #主页
    return render_template('s_student.html',stu = STUDENT_DICT)

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == 'POST':
        session["username"] = request.form.get('username')
        return redirect('/index')
    else:
        return render_template('s_login.html')


@app.route('/detail',endpoint='detail')
@wrapper
def detail():
    id = int(request.args.get('id'))
    stu_info = STUDENT_DICT[id]
    return render_template('detail.html',stu_info = stu_info)


if __name__ == '__main__':
    app.run()
基于session的装饰器做登录校验
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ stu_info }}
</body>
</html>
detail.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ stu_info }}
</body>
</html>
s_login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ stu_info }}
</body>
</html>
s_tudent.html

 

posted @ 2019-06-02 14:19  jack_zhangn`  阅读(115)  评论(0编辑  收藏  举报