Flask - 视图(Request&Response)

在这里插入图片描述

Response-响应对象(Server返回值)
#! /usr/bin/python3
# -*- encoding:utf8 -*-

'''
Response - Flask视图函数的返回值
Response的返回数据类型:
1、str - 字符型
2、dict - Json格式的字符串
3、Response对象
4、make_response() - 自定义 Response 响应对象
5、redirect() -  URL重定向:302状态码
    - return redirect('<url路由>')
    - return redirect(url_for('<路由的endpoint名>'))
6、render_template('HTML模板名', **context) - 模板渲染 + HTML模板,使用此方法调用Flask templates目录中的HTML模板
'''

from flask import Flask, make_response, render_template, redirect, url_for

app = Flask(__name__)


def after_req(response):  # 定义after_req()函数处理跨域访问异常
    response.headers['Access-Control-Allow-Origin'] = 'https://<Your Domain>'
    response.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'
    response.headers['Access-Control-Allow-Headers'] = 'Content-Type,Authorization'
    response.headers['Access-Control-Allow-Credentials'] = 'true'
	
	# 返回response对象
    return response


@app.route('/login', endpoint='login', methods=['GET', 'POST'])
def res():
    content = '''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
</head>
<body>
<form action="/" method="post">
    <h1>用户登录</h1>
    <p><input type="text" name="username" placeholder="请输入你的帐号"></p>
    <p><input type="password" name="password" placeholder="请输入你的密码"></p>
    <p><input type="submit" placeholder="登录"></p>

</form>
</body>
</html>
    '''
    # 使用make_response 自定义Response对象
    response = make_response(content, 200)
    # 添加自定义Response响应头信息
    response.headers['Name'] = 'NBA'
    response.headers['Type'] = 'Game'
    # print(response)
    print(response.headers)
    print(response.status_code)

    # 返回一个Response对象
    return response


@app.route('/<int:num>')
def index(num):
    if num == 1:
    	# 使用render_template()方法调用HTML模板
        html = render_template('<HTML模板名>')
        # 返回render_template的返回结果
        return html
    else:
        # return redirect('<URL路由>')
        # 使用redirect()方法重定向指定URL
        return redirect(url_for('<endpoint名>'), code=302)


if __name__ == '__main__':
    app.after_request(after_req)
    app.run(port=5001, debug=True)

在这里插入图片描述

Request-请求对象 (Clinet)
# /usr/bin/python3
# —*— encoding:utf-8 —*—

'''
Request - Flask 请求对象,处理浏览器客户端请求
Request重点:
1、make_request() - 使用此方法可实现自定义请求对象数据信息
2、request.args - 获取URL的GE请求的参数数据
    - request.args.get()
3、request.form - 获取URL的POST请求的表单数据
    - request.form.get()
4、request.josn - 获取URL的POOST请求的BODY的JSON格式数据
    - request.json.get()
'''

from flask import Flask, render_template, request
import config

app = Flask(__name__)
app.config.from_object(config)


# flask跨域访问的处理办法
def after_req(response):
    response.headers['Access-Control-Allow-Origin'] = 'https://<Your-Domain>'
    response.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'
    response.headers['Access-Control-Allow-Headers'] = 'Content-Type,Authorization'
    response.headers['Access-Control-Allow-Credentials'] = 'true'
    return response


@req.route('/test/add', endpoint='add')
def add():
    # 使用 render_template()方法调用HTML模板
    html = render_template('add.html')
    return html


@req.route('/test/index/device.json', methods=["POST", "GET"])
def index():
    global content
    if request.method == "POST":
        content = {
            "name": request.form.get("name"),
            "type": request.form.get("type"),
            "Model": request.form.get("model"),
            "SN": request.form.get("SN"),
            "Asset_No": request.form.get("Asset_No"),
            "IP_Addr": request.form.get("IP_Addr"),
            "address": request.form.get("address"),
        }

    elif request.method == 'GET':
        content = {
            "name": request.args.get("name"),
            "type": request.args.get("type"),
            "Model": request.args.get("model"),
            "SN": request.args.get("SN"),
            "Asset_No": request.args.get("Asset_No"),
            "IP_Addr": request.args.get("IP_Addr"),
            "address": request.args.get("address"),
        }

    dd = {
        "content": {
            "data": [
                content
            ],
            "currentPage": 1,
            "totalCount": 1
        },
        "success": True,
        "errorCode": "",
        "errorMsg": ""
    }

    return dd


# req.route('/test/values')
# def value():
#     return jsonify(dd)


if __name__ == '__main__':
	# 使用after_request()方法调用after_req函数处理跨域访问
    app.after_request(after_request)
    app.run(host='0.0.0.0', port=5005)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值