• 构造json响应,重定向响应及终止响应,设置及使用cookies


    #!/user/bin/env python
    # -*-coding:utf-8 -*-
    from flask import Flask, request, make_response, json, redirect, abort
    import cx_Oracle

    # app = Flask(__name__, static_folder='assets')
    # app = Flask(__name__, static_folder='/var/assets') # 使用绝对路径
    app = Flask(__name__, static_folder='assets', static_url_path='/assets') # 使用关键字参数换别名


    @app.route('/', methods=['GET', 'POST'])
    def v_index():
    # user_name = request.args['user_id'] # get请求
    # user_name = request.form['user_id'] # post表格请求
    user_id = request.json['user_id'] # post json格式请求
    print(type(user_id))

    conn = cx_Oracle.connect('czth_sales/123456@127.0.0.1:1521/ORCL')
    cur = conn.cursor()
    sql = 'select t.user_id from th_user_info t '
    cur.execute(sql)
    data = cur.fetchall()
    l = []
    for i in data:
    for j in i:
    l.append(j)
    print(l)
    if eval(user_id) in l:
    rsp = make_response('%s,你好' % user_id)
    rsp.set_cookie('user_id', user_id) # 设置cookies
    return rsp

    else:
    return '用户不存在'


    # ---使用cookies---
    @app.route('/data')
    def data():
    user_id = request.cookies['user_id']
    return '%s,你好' % user_id


    users = ['wapn', 'race8', '斯巴达克斯']


    # ---构造JSON响应---
    @app.route('/dd')
    def dd():
    return json.dumps(users), 200, [('Content-Type', 'application/json;charset=utf-8')]


    # ---重定向响应---
    '''
    301 - 请求的网页已被永久移动到新位置
    302 - 服务器目前正从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
    303 - 对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI
    305 - 请求者只能使用代理访问请求的网页。
    307 - 对于POST请求,表示请求还没有被处理,客户端应该向Location里的URI重新发起POST请求
    flask.redirect(location, code=302, Response=None)
    '''


    # 使用redirect()方法进行重定向,状态码默认为302
    @app.route('/page')
    def page():
    return redirect('/page2', code=301, Response=None)


    @app.route('/page2')
    def newpage():
    return 'new page'


    # ---终止响应---abort(code)
    @app.route('/user')
    def v_user():
    if 'token' in request.args:
    return 'good'
    else:
    abort(401)


    app.run(debug=False)
  • 相关阅读:
    C++注释
    python绘制动态图
    解决“<form>提交,CSRF验证失败。请求中止”
    Django相关的MTV
    AVplayer搭建ftp共享PC端
    02: 均值(1.5编程基础之循环控制)
    1.5编程基础之循环控制_ 01:求平均年龄
    for循环进阶
    找第k大的数
    c++中,bool与int 的区别
  • 原文地址:https://www.cnblogs.com/wapn/p/9734823.html
Copyright © 2020-2023  润新知