目录
1.响应数据之新手三件套
1.1 字符串响应形式:
字符串:直接使用return关键字返回一个字符串: return 'hello flask'
1.2 模板响应形式
模板的返回:
建立templatest文件夹(在pycharm中Mark Directory as Template Folder, pycharm中还需要设置模板引擎为jinjia2)
在template中建立要返回的HTML页面
在视图中使用render_template('HTML文件名')返回模板
例如:
# 示例:
from flask import Flask
from flask import render_template
app = Flask(__name__)
@app.route('/')
def index():
# render_template()返回模板
return render_template('index.html')
if __name__ == '__main__':
app.run()
1.3 重定向响应形式
重定向:重定向是跳转至一个新的路由,使用redirect
重定向的形式:
直接重定向一个外链
重定向一个内部链接
重定向外链和内链:
# 重定向外链
from flask import Flask
from flask import redirect
app = Flask(__name__)
@app.route('/')
def index():
# 访问/根路由, 直接跳转至百度首页
return redirect('http://www.baidu.com/')
if __name__ == '__main__':
app.run()
# 重定向至内部连接
from flask import Flask
from flask import redirect
from flask import url_for
app = Flask(__name__)
@app.route('/')
def start():
# 使用url_for跳转至内部链接, url_for()中指定某个路由的endpoint值
return redirect(url_for('idx'))
# redirect直接跳转, 内部传入指定的路由
# return redirect('/index')
@app.route('/index', endpoint='idx')
def index():
return 'index页面'
if __name__ == '__main__':
app.run(debug=True)
2. 响应json数据与元组
2.1 json数据响应
返回json数据需要借助flask提供的jsonify来实现
例如:
# 实例如下:
from flask import Flask
from flask import jsonify
app = Flask(__name__)
@app.route('/index', endpoint='idx')
def index():
# 字典形式数据
data = {
'name': 'jeremy',
'age': 18
}
# 返回json数据
return jsonify(data)
# 看一下源码
if __name__ == '__main__':
app.run(debug=True)
2.2 元组数据响应
元组形式: 可以返回一个元组。这样的元组必须是(response, status, headers)的形式,且至少包含2个元素。status 值会覆盖状态代码, headers可以是一个列表或者字典,作为额外的消息表头值
# 示例如下:
from flask import Flask
from flask import jsonify
app = Flask(__name__)
@app.route('/index', endpoint='idx')
def index():
# return ('要返回的字符串', 6969是状态码, {'author': 'jeremy'}字典是设置在响应头中的键值对信息)
return ('要返回的字符串', 6969, {'author': 'jeremy'})
if __name__ == '__main__':
app.run(debug=True)
3.make_response()自定义响应
make_response()形式:flask可以返回make_response自定义的响应,make_response()内部需要传递返回的字符串,起创建的对象还有headers属性用于设置响应头,status属性用于设置状态码
# 示例如下:
from flask import Flask
from flask import make_response
app = Flask(__name__)
@app.route('/index', endpoint='idx')
def index():
# 响应字符串
resp = make_response('自定义的响应字符串')
# 响应头键值对
resp.headers['author'] = 'jeremy'
# 状态码与状态码提示信息
resp.status = '6969 a post'
# 注意: 响应头键值对与状态码提示信息均为英文, 否则抛异常
return resp
if __name__ == '__main__':
app.run(debug=True)