跳转至

静态文件

  1. 把静态文件放到应用当前文件路径下的static文件夹中
  2. 访问时使用 /static/filename的形式访问文件

  3. 当然也可以使用send_static_file主动发送静态文件给前端

@app.route('/img', methods=['GET', 'POST'])
def img():

    # GET请求
    if request.method == 'GET':
        # send_static_file可以自动判断静态文件的类型, 并设置content-type
        return app.send_static_file('img_01.jpg')

模板文件渲染

  1. 将模板文件文件放到应用当前文件路径下的templates文件夹下(pycharm需要设置模板语言)
  2. 使用render_template函数进行模板渲染,可选函数keyword进行模板内容替换(jinja2语法) 34951-r2mag8rf07k.png

自定义响应对象

  • 主要设置响应头
  • 响应头是dict类型,可以直接kv赋值
@app.route('/header')
def header():
    # 视图函数可以返回str/bytes类型, 内部都会将其包装为Response响应对象
    # return "header"

    # 自定义响应对象
    response = make_response('这是一个自定义响应对象')
    response.headers['num']= 123 # 自定义了一个响应头, 返回给客户端
    print(response.headers) # 打印一下这个响应对象中的响应头

    return response

快速响应Json数据

  • jsonify会将字典转为json字符串, 并且自动设置content-type为application/json
@app.route('/JSONS')
def JSONS():
    json_dict = {
        'age':12,
        'name':'小明'
    }
    return jsonify(json_dict)

重定向

  • redirect函数会对请求进行重定向
  • url_for: 一般配合redirect使用,如果要重定向到应用的其他视图中, 可以得到视图的相对路径
@app.route('/red')
def Red():
    # return redirect('https://www.baidu.com') # 重定向到百度

    # url_for :  获取视图函数对应的URL   一般和redirect配合使用, 有利于URL重构
    url = url_for('index') # 获得 index 视图的路径
    print(url) # 打印重定向的url地址
    return redirect(url)
  • 注意!!!: 如果重定向的是一个动态url, 那就需要手动传入动态url需要的参数
# 定义一个用户中心 , 需要路径传参
@app.route('/user/<userid>')
def user(userid):
    return "userid:{}".format(userid)

 # 定义重定向,注意手动传参(这里暂时写死)
@app.route('/red')
def Red():
    return redirect(url_for("user", userid=20))