flask项目请求与响应

2023-09-12 21:10:07

项目名:

static (静态) js css
templates (模板)
app.py (运行)

web项目
mvc:

model 模型
view 视图
controller 控制器
在这里插入图片描述

mtv

model (模型)
templates (模板) --> html
view 视图 (python代码) 起控制作用

b/s browser server 浏览器服务器

c/s client server 客户端服务器

flask 的第一个程序

from flask import Flask

app = Flask(__name__)
# 装饰器
@app.route('/')   # 路由
def hello_world():   # 视图函数  mtv:view 视图函数
    return "hello world"
if __name__ == '__main__':
    app.run()
* Serving Flask app 'app'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. 
Use a production WSGI server instead.
 * Running on http://127.0.0.1:5000
Press CTRL+C to quit
127.0.0.1 - - [17/Oct/2022 15:39:44] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [17/Oct/2022 15:39:45] "GET /favicon.ico HTTP/1.1" 404 -

什么是WSGI

web服务器网关接口,python web server gateway interface
是为python语言定义的web服务器和web应用程序或框架之间的一种简单而通用的接口。
在这里插入图片描述

run函数参数

host,port
可以自定义ip地址和端口号
app.run(host='ip地址',port='端口号')

注意:如果host改成:0.0.0.0 统一局域网可以访问,如果放在服务器上则外网可以访问。

debug

在浏览器实时查看代码修改的内容,重新加载最新的代码,如果值是True的话。 (默认是false)
debug是bool类型,叫做开启了调试模式,适用于开发环境 dev

app.run(debug=True)

配置文件

app.config()  
{'ENV': 'production',
 'DEBUG': False,
 'TESTING': False,
 'PROPAGATE_EXCEPTIONS': None,
 'SECRET_KEY': None,
 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31),
 'USE_X_SENDFILE': False,
 'SERVER_NAME': None,
 'APPLICATION_ROOT': '/',
 'SESSION_COOKIE_NAME': 'session',
 'SESSION_COOKIE_DOMAIN': None,
 'SESSION_COOKIE_PATH': None,
 'SESSION_COOKIE_HTTPONLY': True,
 'SESSION_COOKIE_SECURE': False, 
 'SESSION_COOKIE_SAMESITE': None,
 'SESSION_REFRESH_EACH_REQUEST': True,
 'MAX_CONTENT_LENGTH': None,
 'SEND_FILE_MAX_AGE_DEFAULT': None,
 'TRAP_BAD_REQUEST_ERRORS': None,
 'TRAP_HTTP_EXCEPTIONS': False,
 'EXPLAIN_TEMPLATE_LOADING': False,
 'PREFERRED_URL_SCHEME': 'http',
 'JSON_AS_ASCII': None,
 'JSON_SORT_KEYS': None,
 'JSONIFY_PRETTYPRINT_REGULAR': None,
 'JSONIFY_MIMETYPE': None,
 'TEMPLATES_AUTO_RELOAD': None,
 'MAX_COOKIE_SIZE': 4093}

可以看到结果是一个字典类型,可以通过‘ENV’字段修改环境

app.config['ENV'] = 'deveploment'
app.config['DEBUG'] = True
编写配置文件

创建一个配置文件settings.py

# 配置文件
ENV = 'development'
debug = True

在使用环境的时候

from flask import Flask
import settings

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

return的返回对象

from flask import Flask, Response

@app.route("/index1")
def index1():
    return '<h1>北京</h1>'

# 这种方式返回字符串,其实也相当于做了一个response对象的封装,最终返回的结果还是response对象

@app.route("/index2")
def index2():
    return ("beijing","shanghai","shenzhen")


@app.route("/index3")
def index3():
    return Response("这是一个response对象")

注意:当返回的是元组的时候会有问题。

@app.route("/index2")
def index2():
    return "sorry! the file is not found!", 404
# 元组需要传两个值,默认会把这种情况当做元组。  后面的状态码是响应行中的状态码
还有一种可以自定义响应头部信息的方法:
from flask import Flask, Response, make_response


@app.route("/index4")
def index4():
    s = """
    定制响应头
    
    """
    response = make_response(s)
    response.headers["mytest"] = "123abc"
    return response

request 对象

from flask import Flask, request
import setting


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

@app.route("/index")
def index():
    print(request.headers)   # request对象访问对象属性
    print(request.path)
    print(request.base_url)
    print(request.url)
    return "app"

if __name__ == '__main__':
    app.run()
更多推荐

torch 和paddle 的GPU版本可以放在同一个conda环境下吗

新建conda虚拟环境,python版本3.8.17虚拟机,系统centos7,内核版本Linuxfastknow3.10.0-1160.92.1.el7.x86_64,显卡T4,nvidia-smi,460.32.03,对应cuda11.2,安装cuda11.2和cudnn,conda版本23.1conda安装pad

shiro反序列化漏洞Shiro-550/Shiro-721反序列化

文章目录shiro反序列化漏洞Shiro-550反序列化漏洞(CVE-2016-4437)漏洞简介漏洞原理Shiro-721反序列化漏洞(CVE-2019-12422)Shiro550和Shiro721的区别是什么漏洞指纹漏洞介绍漏洞原理攻击流程漏洞复现:CVE-2016-4437漏洞复现:CVE-2019-12422

腾讯mini项目-【指标监控服务重构】2023-07-17

今日已办根据导师的指导意见修改了otelclient相关配置的代码认真学习uptrace的文档,会比otel、signoz的好理解:什么是OpenTelemetryhttps://uptrace.dev/opentelemetry/architecture.html#opentelemetry-sdktrace部分介绍

软件设计模式系列之五——建造者模式

1模式的定义建造者模式是一种对象创建型设计模式,它将一个复杂对象的构建过程与其表示分离。这意味着你可以使用相同的构建过程来创建不同类型的对象,而不必关心每个对象的内部细节。这种模式适用于构建具有复杂配置的对象,例如具有多个可选组件的汽车。2结构建造者模式的结构包括以下几个关键部分:Director(指导者):负责指导构

设计模式:建造者模式

目录代码简单实现常用使用方法注解方法使用建造者模式总结建造者模式(BuilderPattern)是一种创建型设计模式,它通过将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。该模式将对象的构建过程封装在一个独立的建造者类中,客户端通过指定不同的建造者来构建不同的对象。在建造者模式中,有以下几个主要

http1和http2的主要区别

主要有四个方面:二进制分帧多路复用服务器主动推送头部压缩将前两点结合来说,首先二进制分帧帧:HTTP/2数据通信的最小单位;消息:HTTP/2中,例如在请求和响应等操作中,消息由一个或多个帧组成;流:存在于连接中的一个虚拟通道。流可以承载双向消息,每个流都有一个唯一的整数ID。而二进制分帧是发生在应用层和传输层中间产生

第P5周—运动鞋识别

一、前期工作1.导入数据集数据集:工作台-Heywhale.comimporttorchimportmatplotlib.pyplotaspltfromtorchvisionimporttransforms,datasetsimportos,PIL,random,pathlibdata_dir=r'D:\P5-data

WebGL 计算平行光、环境光下的漫反射光颜色

目录光照原理光源类型平行光点光源环境光反射类型漫反射漫反射光颜色计算公式环境反射环境反射光颜色表面的反射光颜色(漫反射和环境反射同时存在时)计算公式平行光下的漫反射根据光线和法线方向计算入射角θ(以便求两者点积:cosθ)归一化法线:表面的朝向一个表面具有两个法向量平面的法向量唯一示例代码——平行光漫反射(Lighte

人工智能在现代科技中的应用和未来发展趋势

人工智能是一种模拟人类智能的技术,包括学习、推理、计算和自动化等方面的能力。在现代科技中,人工智能应用非常广泛,包括以下方面:1.自然语言处理:人工智能可以识别和处理自然语言,使得语音识别、语音合成、文本翻译等变得更加智能。2.图像识别:人工智能可以通过图像识别技术来分析和识别图像中的内容,使得人脸识别、车牌识别、图像

2023 蓝帽杯初赛web&部分取证复现

前言:初赛进线下了,计划着在决赛前突击学习一下取证,但时间还是太紧只看了很多内存取证和手机取证计算机取证和服务器取证没掌握---(不过复赛没考,也算狗运了)目录<1>web-LovePHP(file()函数侧信道攻击)<2>取证(1)APK取证1【APK取证】涉案apk的包名是?[答题格式:com.baid.ccs]2

华为云云耀云服务器L实例评测|redis漏洞回顾 & MySQL数据安全解决 搭建主从集群MySQL & 相关设置

前言最近华为云云耀云服务器L实例上新,也搞了一台来玩,期间遇到过MySQL数据库被攻击的情况,数据丢失,还好我有几份备份,没有造成太大的损失;后来有发现Redis数据库被攻击的情况,加入了redis密码初步解决问题。总之就是各种遭受毒打。。。本篇博客回顾Redis的未授权访问漏洞,介绍MySQL主从集群的搭建,以及相关

热文推荐