| |
|
开发:
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图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 23:03:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |