# coding=utf-8
from config import Config
from flask import Flask,jsonify,abort,redirect,url_for
app = Flask(__name__)
app.config.from_object(Config)
# 返回json数据
import json
@app.route('/json')
def demo1():
my_dict = {"name":"tiantian","age":"10"}
# return json.dumps(my_dict)
return jsonify(my_dict)
# 返回状态码,通过return直接返回,可以返回不符合http协议的状态码,主要为了实现前后端的数据交互
@app.route('/status')
def demo2():
return 'demo2:',405
#以上在浏览器中输入127.0.0.1:5000/status,页面中出现demo2: 在检查源代码中可以看见状态码为405
# 异常处理,abort,类似于python中raise语句,作用是处理异常信息,只能抛出符合http协议的状态码,abort只要捕获异常,后面代码不执行
@app.route('/')
def demo3():
abort(404)
return 'demo2:'403
@自定义错误信息 errorhandler会捕获abort函数抛出的异常状态码
@app.errorhandler(404)
def demo4(e):
return '页面找不到了,请访问某某页面'
# 重定向,当项目目录或者文件发生改变的情况下,需要使用重定向 www.360buy.com
# 当活动页面不存在时,不建议直接使用redirect定向到具体的url,建议使用动态的url
# 反向解析
@app.route('/redirect')
def demo5():
return redirect('http://www.baidu.com')
# 以上当在浏览器中输入127.0.0.1:5000/redirect 页面跳转到百度
"""
或者以上这样写
@app.route('/redirect')
def demo5():
a = 'http://www.baidu.com'
return redirect(a)
"""
#使用url_for,接受的参数是视图函数名
@app.route('/')
def demo6():
return redirect(url_for('demo5'))
# 以上当在浏览器中输入127.0.0.1:5000 ,页面可以跳转到百度,最好用url_for
if __name__=='__main__':
app.run()
同目录下创建同级文件config.py
class Config:
DEBUG = True
SECRET_KEY='b1IHqfGBJbdmANeA3Ch/kEjd1jVw7EWifvdPUC8CXyu1+KsAKXnh8boLtjpwAoIOCLM='