Flask之基础(1)

启动

from flask import Flask       # 导入Flask类
app = Flask(__name__)         # 实例化Flask对象app, 当前文件所属目录
app.run()                     # 启动web服务

带有路由与视图的启动

from flask import Flask
app = Flask(__name__)

@app.route("/index")         # app中的route装饰器, 相当于路由
def index():                 # 视图函数  
	return "hello world"
app.run('0.0.0.0', debug=True)

Flask返回值

from flask import Flask, render_template, redirect

1. Flask中的HttpPesponse
return 'hello world'

2.Flask中的redirect
@app.route('/login')
def login():
	return redirect('/index')    # 重定向跳转到指定额url地址
	
3.Flask 中的 render
@app.route('/login')
def login():
	return render_template('login.html')
注意: 使用 render_template 返回渲染的模板,要在项目的主目录中加入 templates (固定写法)
# 特殊返回值
from flask import Flask, send_file, jsonify

# 打开并返回文件内容, 自动识别文件类型, 响应头Content-type: 文件类型
return send_file('video.mp4')

# 返回标准格式的JSON字符串, 响应头中Content-type:application/json
return jsonify({"key":"value"})

request (请求)

from flask import Flask, request

@app.route('/index', method=['GET', 'POST'])
def index():
	pass

method=['GET', 'POST']    # 允许的请求方式

1.request.method          # 前端的请求方式

2. request.form           # 获取前端提交的formdata
request.form['user']
request.form.get('user')
request.form.to_dict()

3. request.args           # 接收url中的参数, 获取到一个字典
request.args['id'] 
request.args.get('id')
request.args.to_dict()

4. request.values         # 获取所有的参数
request.values['user']
request.values.get('user')
request.values.to_dict()  # url和form中的Key重名,form中的value会被url中的value覆盖

5. request.cookies        # 将浏览器中的cookies信息读取出来

6. request.headres        # 请求头中的信息

7. request.data           # 存放请求体中的原始信息(处理不了的字符串) b""
json.loads(request.data)  # 转为json数据

8. request.json   # 请求头中Content-Type:application/json 将请求体中的数据, 存放在JSON中

9. request.files                  # 接收文件
file = request.files.get("file")  # file为文件的key
file.save(file.filename)          # 保存文件

10. reequest.url          # http://127.0.0.1:5000/index : 获取全部的url地址

11. request.path          # /index : 获取当前的url地址

jinja2

1. 后端向前端传送数据
STUDENT = {'name': 'Old', 'age': 38, 'gender': '中'}

@app.route('/index')
def index():
    return render_template('index.html', stu=STUDENT)

前端:
    {{ stu }}

2. 后端自定义前端的代码, Markup = safe
from flask import Flask, render_template, Markup

@app.route('/login', methods=['GET', 'POST'])
def login():
    tag = Markup('<input type="text" name="name">')
    return render_template('login.html', tag = tag)

3. 全局函数, 不需要传值, 前端可以直接调用
@app.template_global()
def ab(a, b):
    return a + b

前端:
    {{ ab(1,3) }}     # 4
    
4. macro (宏)

{% macro func(type, name) %}  # 定义函数
    <input type="{{ type }}" name="{{ name }}">
{% endmacro %}
{{ func('text','name') }}     # 调用函数

Flask原生session

Flask中的Session会将SessionID存放在客户端的Cookie中。

Flask中的session, 需要通过secret_key 序列化(加密)

from flask import session

app.secret_key = '@#$%^&*()'

session['user'] = 'jason'   # 设置session
session.get('user')         # 获取session
posted @ 2019-07-08 15:16  言值  阅读(145)  评论(0编辑  收藏  举报