当前位置: 首页 > news >正文

上海网站建设500元黑马it培训班出来现状

上海网站建设500元,黑马it培训班出来现状,网站建设的难处,工作室网站源码phpRequest、Response、Cookies、Session等对象的使用 Request对象基本使用参数的获取转换器内置转换器自定义转换器 Response对象基本使用返回模板重定向返回JSON Cookies对象设置cookie获取cookie删除cookie Session会话对象设置SECRET_KEY设置会话获取会话释放会话 Request对象…

Request、Response、Cookies、Session等对象的使用

  • Request对象
    • 基本使用
    • 参数的获取
    • 转换器
    • 内置转换器
    • 自定义转换器
  • Response对象
    • 基本使用
    • 返回模板
    • 重定向
    • 返回JSON
  • Cookies对象
    • 设置cookie
    • 获取cookie
    • 删除cookie
  • Session会话对象
    • 设置SECRET_KEY
    • 设置会话
    • 获取会话
    • 释放会话

Request对象

Flask Request对象是一个封装了HTTP请求信息的类,它提供了访问HTTP请求的各种属性和方法,如URL参数、表单数据、文件上传等。

可以通过request变量来访问该对象,在Flask应用中接收并处理来自客户端发送的HTTP请求。例如,可以使用request.method获取HTTP请求方法,使用request.args.get('key')获取URL参数,使用request.form.get('key')获取表单数据。

Request对象的重要属性:

属性说明
Form它是一个字典对象,包含表单参数及其值的键和值对
args解析查询字符串的内容,它是问号(?)之后的URL的一部分
Cookies保存Cookie名称和值的字典对象
files与上传文件有关的数据
method当前请求方法

基本使用

使用Flask Request对象需要在Flask应用程序中导入request模块。

from flask import Flask, requestapp = Flask(__name__)@app.route('/')
def student():return render_template('index.html')@app.route('/post',methods = ['POST', 'GET'])
def post():if request.method == 'POST':# request.form:表单数据result = request.formprint(result)return "post"@app.route('/get')
def get():# 获取URL参数中名为name的值,默认为Jackname = request.args.get('name', 'Jack')return f'Hello, {name}!'@app.route('/upload', methods=['POST'])
def upload():# 获取上传文件对象file = request.files['file']if file:return 'File uploaded successfully.'if __name__ == '__main__':app.run()

参数的获取

在 Flask 中,可以通过request对象获取请求的参数。不同位置的参数都存放在request的不同属性中

属性说明类型
data记录请求的数据,并转换为字符串*
form记录请求中的表单数据MultiDict
args记录请求中的查询参数MultiDict
cookies记录请求中的cookie信息Dict
headers记录请求中的报文头EnvironHeaders
method记录请求使用的HTTP方法GET/POST
url记录请求的URL地址string
files记录请求上传的文件*

1.获取 GET 请求参数

request.args.get('参数名')

2.获取 POST 请求参数

request.form.get('参数名')
request.values.get('参数名')

注意:前者只能获取表单数据,后者既可以获取表单数据,也可以获取 URL 查询字符串中的数据。

3.获取上传的文件

request.files['文件字段名']

注意:如果请求中不存在指定的参数或文件,上述方法会返回None

4.获取多个值相同的参数

这些方法会返回一个列表,其中包含所有同名参数的值。

request.args.getlist('参数名')
request.form.getlist('参数名')
request.values.getlist('参数名')

使用示例:

获取请求/user?uid=1中uid参数

from flask import request@app.route('/user')
def user():uid = request.args.get('uid')return 'USER ID: {}'.format(uid)

客户端上传图片到服务器,并保存到服务器中

@app.route('/upload', methods=['POST'])
def upload_file():f = request.files['pic']# with open('./upload.png', 'wb') as new_file:#     new_file.write(f.read())f.save('./upload.png')return 'upload successful'

转换器

Flask不同于Django直接在定义路由时编写正则表达式的方式,而是采用转换器。使用转换器实现匹配URL路径参数、动态路由,将URL中的变量转换为Python 对象,并将其传递给视图函数。

假设有一个请求访问接口地址为:/users/1,其中1是具体请求参数

@app.route('/user/<uid>')
def user(uid):print(type(uid))return 'USER ID: {}'.format(uid)

<>即是一个转换器,默认为字符串类型,兼容数值,将该位置的数据以字符串格式进行匹配、并以字符串为数据类型、 uid为参数名传入视图。

内置转换器

Flask中的Flask内置了常见的转换器:

DEFAULT_CONVERTERS: t.Mapping[str, t.Type[BaseConverter]] = {"default": UnicodeConverter,"string": UnicodeConverter,"any": AnyConverter,"path": PathConverter,"int": IntegerConverter,"float": FloatConverter,"uuid": UUIDConverter,
}

以整型匹配数据

@app.route('/user/<int:uid>')
def user(uid):print(type(uid))return 'USER ID: {}'.format(uid)@app.route('/user/<int(min=5):uid>')
def user(uid):print(type(uid))return 'USER ID: {}'.format(uid)

自定义转换器

当Flask内置的转换器就无法满足需求时,Flask还允许自定义转换器来处理更加特殊的需求。自定义转换器需要继承自werkzeug.routing.BaseConverter 类。

from flask import Flaskapp = Flask(__name__)from werkzeug.routing import BaseConverter# 1.定义转换器类,继承⾃baseconverter
class EmailConverter(BaseConverter):# 指定匹配时的正则表达式regex = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'class UpperConverter(BaseConverter):def to_upper(self, value):return value.upper()# 2.将自定义转换器添加到转换器字典中,并指定转换器使用时名字为: email
app.url_map.converters['email'] = EmailConverter
app.url_map.converters['upper'] = UpperConverter# 3.在使用转换器的地方定义使用,即在装饰器中使⽤转换器
@app.route('/send_email/<email:to_email>')
def send_sms_code(to_email):return 'send email to {}'.format(to_email)@app.route('/<upper:name>')
def hello(name):return f'Hello, {name}!'    

Response对象

Flask中的Response对象是用于构建 HTTP 响应的类。它继承自 Python 标准库中的werkzeug.wrappers.Response 类,提供了一些方便的方法,如设置响应头、状态码和内容等。

在 Flask 应用程序中,通常使用make_response() 函数来创建一个响应对象。这个函数会根据给定的参数创建一个 Response 对象,并返回该对象。

基本使用

调用 make_response() 函数来创建一个响应对象并将字符串Hello, World设置为响应体。然后,设置响应头部信息 Token,设置响应状态码200 OK,并最终将响应对象返回给客户端。

from flask import make_response@app.route('/')
def index():resp = make_response('Hello World')resp.headers["Token"] = "Python"resp.status = "200 OK"return resp

还可以通过元祖方式进行响应:

返回一个元组,元组必须是 (response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers可以是一个列表或字典,作为额外的消息标头值。

@app.route('/')
def index():# return 'Hello Wold', 500return 'Hello Wold', 200, {'Token': 'Python'}

返回模板

templates目录新建一个模板index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div><b>姓名:</b><span>{{ name }}</span><br><b>年龄:</b> <span>{{ age }}</span></div>
</body>
</html>

在后端视图,使用render_template方法渲染模板并返回

from flask import render_template@app.route('/')
def index():name = 'Flask'age = 22return render_template('index.html', name=name, age=age)

重定向

在 Flask 中,可以使用 redirect 函数进行重定向。该函数位于 flask 模块中,可以接受一个 URL 参数作为重定向的目标。调用时,它返回一个响应对象,并将用户重定向到具有指定状态代码的另一个目标位置

当用户访问根URL/ 时,会调用index函数,并在其中调用 redirect 函数,将用户重定向到login视图函数所对应的 URL。

from flask import Flask, redirect, url_forapp = Flask(__name__)@app.route('/')
def index():return redirect(url_for('login'))@app.route('/login')
def login():return 'Login page'

当访问URL/test 时,会重定向到baidu.com

from flask import redirect@app.route('/test')
def test():return redirect('http://www.baidu.com')

注意:

在 redirect 函数中传入的 URL 参数可以是相对路径或绝对路径。如果传入的是相对路径,则会基于当前请求的 URL 进行解析,生成最终的重定向目标 URL。如果传入的是绝对路径,则直接使用该路径作为重定向目标 URL。

返回JSON

在 Flask 中,可以使用 jsonify 函数将 Python 对象转换为 JSON 格式,并返回一个包含 JSON 数据的响应对象。

from flask import jsonify@app.route('/')
def index():json_dict = {"name": 'Flask',"age": 22}return jsonify(json_dict)

注意:

在返回 JSON 数据之前,需要将Python对象转换为JSON格式。可以使用 json.dumps()函数完成这个转换过程。但是,在 Flask 中,通常使用 jsonify() 函数来代替 json.dumps() 函数,因为 jsonify() 函数除了将对象转换为 JSON 格式外,还会设置正确的 MIME 类型,以及处理跨域访问等问题。

Cookies对象

Request对象包含Cookie对象属性,它是所有cookie变量及其对应值的字典对象

设置cookie

设置cookie,默认有效期是临时cookie,浏览器关闭就失效

@app.route('/set')
def set():resp = make_response('Hello World')resp.set_cookie('Token', 'Python' , max_age=3600)return resp

在设置 cookie 时,可以指定其过期时间、域名、路径等信息。在 Flask 中,可以通过设置 max_age、expires、domain、path 等参数来实现这些功能。

resp.set_cookie('user', 'Tom', max_age=3600, expires=None, domain=None, path='/')
max_age :参数表示 cookie 的最大存活时间(单位为秒)expires  :参数表示 cookie 的过期时间(可以是一个 datetime 对象或时间戳)domain  :参数表示 cookie 可以被发送到哪些域名path : 参数表示 cookie 在哪些路径下可用

获取cookie

获取cookie,通过request.cookies的方式, 返回的是一个字典,可以获取字典里的相应的值

@app.route('/get')
def get():resp = request.cookies.get('Token')return resp

删除cookie

删除只是让cookie过期,并不是直接删除cookie,通过delete_cookie()的方式

@app.route('/delete')
def delete():response = make_response('Successfully')response.delete_cookie('Token')return response

Session会话对象

与Cookie不同,Session(会话)数据存储在服务器上。会话是客户端登录到服务器并注销服务器的时间间隔。需要在该会话中保存的数据会存储在服务器上的临时目录中

Session对象也是一个字典对象,包含会话变量和关联值的键值对。

设置SECRET_KEY

为每个客户端的会话分配会话ID。会话数据存储在cookie的顶部,服务器以加密方式对其进行签名。对于此加密,Flask应用程序需要一个定义的SECRET_KEY。

class DefaultConfig(object):SECRET_KEY = '6512bd43d9caa6e02c990b0a82652dca'app.config.from_object(DefaultConfig)

直接设置

app.secret_key='6512bd43d9caa6e02c990b0a82652dca'

设置会话

from flask import session@app.route('/set')
def set():session['Token'] = 'Python'return 'Successfully'

获取会话

可以在 Flask 应用程序中的任何地方访问这个Session变量

@app.route('/get')
def get():Token = session.get('Token')return 'session : {}'.format(Token)

释放会话

@app.route('/pop')
def pop():session.pop('Token', None)return 'OK'
http://www.shuangfujiaoyu.com/news/35027.html

相关文章:

  • 加强政府网站建设的总结国际时事新闻
  • 企业网站建设知识百度竞价ocpc
  • 厦门做外贸网站推广业务
  • 网站推广设计产品推广平台排行榜
  • 网站开发主管岗位职责说明书培训班管理系统 免费
  • 网站下雪代码软件定制
  • 化妆品网站 源码百度网站链接提交入口
  • 搭建发卡网站要多少钱电子商务网站建设与管理
  • 抖音代运营是怎么操作的海淀区seo搜索引擎
  • 做网站从哪里做seo代理计费系统
  • 做家具的外国网站百度搜索风云榜小说
  • 代办公司执照兰州seo关键词优化
  • diy小程序开发平台百度首页优化
  • b2c商城网站建设宁海关键词优化怎么优化
  • laravel如何做网站教育机构在线咨询
  • 哪个网站可以做卖房全网网站推广
  • 政务网站建设实施方案百度竞价排名系统
  • 一个ip做几个网站上海排名优化seobwyseo
  • 公司做网站的费用记什么科目站长统计 站长统计
  • 网站建设和维护工作总结软文平台有哪些
  • 什么是网站交互性长沙网站推广和优化
  • dreamweaver个人网站模板下载百度提交入口的注意事项
  • 福州网站怎么做客服系统网页源码2022免费
  • 网站建设意向表网络热词2023
  • 网站制作发票企业网站建设原则是
  • 衡水网站建设服务商青岛自动seo
  • 手机怎么注册自己的网站如何做好市场推广
  • 学院网站建设 需求分析搜盘 资源网
  • 四川营销型网站建设百度推广一般多少钱
  • 网站建设尺寸全国广告投放平台