| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> Python知识库 -> flask 请求数据和响应 -> 正文阅读 |
|
|
[Python知识库]flask 请求数据和响应 |
一.请求带参???????? 1、路径中带参????????固定参数是指在URL中固定的, 是不可获取的一部分, 区别与查询字符串, 查询字符串是可有可无的. 标准格式 /path/<参数> 默认 参数 格式是字符串 但是我们还有其他的格式,可以做数据格式转换 flask提供了常见数据格式的转换 string、int、float、path、uuid # 2请求参数的获取 /path/<string:参数> ? ? 默认string可不写 ? /path/<int:参数> ? ? 会把参数 转成 整数 如果参数不是整数 会报错返回 404 ? /path/<float:参数> # .转换器
1、创建一个自定义转换器
自定义Converter类
class PhoneConverter(BaseConverter):
# 重写 正则规则 查看参数是否匹配该正则
? regex = r'1[3-9]\d{9}'
?
?
2、注册至converters容器 phone 转换器别名
app.url_map.converters['phone'] = PhoneConverter
?
?
3、使用自定义转换器
@app.route('/user/<phone:user_id>')
def user_info(user_id):
? return "手机号登录:{}".format(user_id)
二.处理请求处理请求flask提供了视图函数,可以在视图函数中 处理请求 1、获取url后?参数request.args.get("参数","默认值")
?
title = request.args.get("title", "没有")
2、form表单传参title = request.form.get("title")
price = request.form.get("price")
3、 json格式传参title = request.json.get("title")
price = request.json.get("price")
4、文件上传file1 = request.files.get("file1")
可以获取文件名 file1.filename 保存文件 file1.save() def upload_file(): 三.响应1、返回字符串默认就可以直接返回字符串,其实返回的还是网页,只不过内容是纯文本 return "返回图书集合" 2、返回模板网页from flask import render_template
?
@app.route("/", methods=["GET", "POST"])
def hello_world():
? return render_template("home.html")
Jinjia2模板 和我们django 内置模板语法 基本一致, 我们简单了解 我们在 视图中 定义好 变量数据 @app.route("/", methods=["GET", "POST"])
def hello_world():
? new_list = ["新闻1", "新闻2", "新闻3", "新闻4"]
?
? return render_template("home.html", news={"news_list": new_list, "title": "我是新标题"})
? ?
在 模板中使用 定义好的变量数据 {{变量名}} 会展示变量的值 {% for 语句 %} 循环体 {% endfor %} <body>
<h1>{{ news.title }}</h1>
<h1>《功勋-李延年》</h1>
?
{% for item in news.news_list %}
? <p>{{ item }}</p>
{% endfor %}
?
?
</body>
3、返回重定向地址有的时候,资源不在当前 路径对应的视图中,而是在另外一个地方,我们就需要重定向,告诉浏览器你在访问 这个地方。 浏览器 其实访问了两遍 from flask import redirect ?
@app.route("/books", methods=["GET"])
def go_book():
? return redirect("/book")
我们在代码中 尽量避免 直接写路径,如果写的多了,想修改某路径的时候,那就需要修改很多地方。 我们使用endpoint 参数 给 路由 起别名, 使用别名代表 该用户 @app.route("/book", endpoint="book")
def book_list():
? title = request.args.get("title", "没有")
?
? return "返回图书集合"
url_for 传入别名 找到对应的路由 ?
@app.route("/books", methods=["GET"])
def go_book():
? return redirect(url_for("book"))
4、返回json格式数据我们要返回json格式数据,可以借助于 提供的函数 jsonify from flask import jsonify jsonify 会返回一个 Content-Type是 application/json 格式的 响应对象 5、返回元组响应我们可以 同时设置?返回内容、响应码、响应头等信息 (响应内容,响应码,响应头) @app.route("/book/add", methods=["POST"])
def book_add():
?
? return ("添加图书成功", 500, {"Content-Type": "application/json"})
6、make_response 返回我们也可以自定义返回的内容,使用make_reponse 方法。 from flask import make_response @app.route("/book/<int:id>/")
def book_one(id):
? print(type(id))
?
? resp = make_response("我要升天")
? resp.headers["Content-Type"] = "text/html"
? resp.status_code = 500
? resp.status = "500 error"
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/1 19:00:48- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |