flask项目请求与响应

项目名:

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()
相关推荐
Looooking10 分钟前
Python 之 selenium 打开浏览器指定端口进行接续操作
python·selenium
Dreams°12312 分钟前
【Python爬虫 !!!!!!政府招投标数据爬虫项目--医疗实例项目文档(提供源码!!!)!!!学会Python爬虫轻松赚外快】
分布式·爬虫·python·mysql·scikit-learn
郜太素18 分钟前
PyTorch 中神经网络相关要点(损失函数,学习率)及优化方法总结
人工智能·pytorch·python·深度学习·神经网络·学习
L_cl22 分钟前
【Python 算法零基础 2.模拟 ④ 基于矩阵】
python·算法·矩阵
玉笥寻珍29 分钟前
web安全渗透测试基础知识之登录绕过篇
python·安全·web安全·网络安全·威胁分析
Eric.Lee202142 分钟前
conda 输出指定python环境的库 输出为 yaml文件
linux·python·conda
PAQQ1 小时前
【python】windows实现与k230使用socket通信并传输文件
python·stm32·单片机
胡耀超1 小时前
图像颜色理论与数据挖掘应用的全景解析
人工智能·python·opencv·计算机视觉·数据挖掘·视觉检测·pillow
love530love1 小时前
家用或办公 Windows 电脑玩人工智能开源项目配备核显的必要性(含 NPU 及显卡类型补充)
人工智能·windows·python·开源·电脑
shengjk11 小时前
序列化和反序列化:从理论到实践的全方位指南
java·大数据·开发语言·人工智能·后端·ai编程