qpython3ll使用教程_Python3+Flask安装使用教程详解

2023-11-19

一、Flask安装环境配置

当前我的开发环境是Miniconda3+PyCharm。开发环境其实无所谓,自己使用Python3+Nodepad都可以。安装Flask库:

pip install Flask

二、第一个Flask应用程序

将以下内容保存为helloworld.py:

# 导入Flask类

from flask import Flask

# 实例化,可视为固定格式

app = Flask(__name__)

# route()方法用于设定路由;类似spring路由配置

@app.route('/helloworld')

def hello_world():

return 'Hello, World!'

if __name__ == '__main__':

# app.run(host, port, debug, options)

# 默认值:host="127.0.0.1", port=5000, debug=False

app.run(host="0.0.0.0", port=5000)

直接运行该文件,然后访问:http://127.0.0.1:5000/helloworld。结果如下图:

022375a96b37c3c32ae3e6d05d5c6266.png

三、get和post实现

3.1 创建用到的模板文件

Flask默认到templates目录下查找模板文件,在上边helloworld.py同级目录下创建templates文件夹。

在templates文件夹下创建get.html,写入以下内容:

get请求示例

再在templates文件夹下创建post.html,写入以下内容:

post请求示例

最后在templates文件夹下创建result.html,写入以下内容:

{{ result }}

3.2 编写相关的处理方法

在helloworld.py中添加get_html()、post_html()和deal_request()三个方法,更多说明见注释。当前helloworld.py内容如下:

# 导入Flask类

from flask import Flask

from flask import render_template

from flask import request

# 实例化,可视为固定格式

app = Flask(__name__)

# route()方法用于设定路由;类似spring路由配置

#等价于在方法后写:app.add_url_rule('/', 'helloworld', hello_world)

@app.route('/helloworld')

def hello_world():

return 'Hello, World!'

# 配置路由,当请求get.html时交由get_html()处理

@app.route('/get.html')

def get_html():

# 使用render_template()方法重定向到templates文件夹下查找get.html文件

return render_template('get.html')

# 配置路由,当请求post.html时交由post_html()处理

@app.route('/post.html')

def post_html():

# 使用render_template()方法重定向到templates文件夹下查找post.html文件

return render_template('post.html')

# 配置路由,当请求deal_request时交由deal_request()处理

# 默认处理get请求,我们通过methods参数指明也处理post请求

# 当然还可以直接指定methods = ['POST']只处理post请求, 这样下面就不需要if了

@app.route('/deal_request', methods = ['GET', 'POST'])

def deal_request():

if request.method == "GET":

# get通过request.args.get("param_name","")形式获取参数值

get_q = request.args.get("q","")

return render_template("result.html", result=get_q)

elif request.method == "POST":

# post通过request.form["param_name"]形式获取参数值

post_q = request.form["q"]

return render_template("result.html", result=post_q)

if __name__ == '__main__':

# app.run(host, port, debug, options)

# 默认值:host=127.0.0.1, port=5000, debug=false

app.run()

3.3 查看运行效果

重新运行helloworld.py。

当前目录结构如下(.idea目录不用管):

ef09f5c78a502bac250ec18b0e245c28.png

get.html如下:

6bed991dc62c81d0e0ef7eeab6504c24.png

get查询结果如下:

e1889432a6da53d713d7a1f1054d9840.png

post.html如下:

f5833bbe2964fc796f6c75388de1f79a.png

post查询结果如下:

87088e0dec58e4338cdf278ffb9f1c6a.png

四、restful

所谓restful简单理解就是以json等格式(而非以前的表单格式)发起请求,及以json等格式(而非以前的html)进行响应。

等下我们通过curl模拟rest请求,然后使用jsonify实现rest响应。

4.1 服务端实现代码

# 导入Flask类

from flask import Flask, jsonify

from flask import render_template

from flask import request

# 实例化,可视为固定格式

app = Flask(__name__)

# route()方法用于设定路由;类似spring路由配置

#等价于在方法后写:app.add_url_rule('/', 'helloworld', hello_world)

@app.route('/helloworld')

def hello_world():

return 'Hello, World!'

# 配置路由,当请求get.html时交由get_html()处理

@app.route('/get.html')

def get_html():

# 使用render_template()方法重定向到templates文件夹下查找get.html文件

return render_template('get.html')

# 配置路由,当请求post.html时交由post_html()处理

@app.route('/post.html')

def post_html():

# 使用render_template()方法重定向到templates文件夹下查找post.html文件

return render_template('post.html')

# 配置路由,当请求deal_request时交由deal_request()处理

# 默认处理get请求,我们通过methods参数指明也处理post请求

# 当然还可以直接指定methods = ['POST']只处理post请求, 这样下面就不需要if了

@app.route('/deal_request', methods=['GET', 'POST'])

def deal_request():

if request.method == "GET":

# get通过request.args.get("param_name","")形式获取参数值

get_q = request.args.get("q","")

return render_template("result.html", result=get_q)

elif request.method == "POST":

# post通过request.form["param_name"]形式获取参数值

post_q = request.form["q"]

return render_template("result.html", result=post_q)

@app.route('/rest_test',methods=['POST'])

def hello_world1():

"""

通过request.json以字典格式获取post的内容

通过jsonify实现返回json格式

"""

post_param = request.json

result_dict = {

"result_code": 2000,

"post_param": post_param

}

return jsonify(result_dict)

if __name__ == '__main__':

# app.run(host, port, debug, options)

# 默认值:host=127.0.0.1, port=5000, debug=false

app.run()

4.2 请求模拟

curl -H "Content-Type:application/json" -X POST --data '{"username": "ls","password":"toor"}' http://127.0.0.1:5000/rest_test

4.3 效果截图

7354a3743c4f1d3709412ad3e43204d4.png

五、Flask与Django比较

5.1 Django配置复杂

如果对Django不是很了解,可以参看

仅从文章长度看就比这篇长很多,所以Django比Flask复杂(得多)是肯定的。更具体比较如下:

比较项

Django

Flask

复杂度比较

说明

项目创建

Django需要用命令创建项目

Flask直接编写文件就可运行

Django复杂

Django需要用命令创建项目是因为要创建出整个项目框架

路由

Django使用专门的urls.py文件

Flask直接使用@app.route()

Django笨重

Django类似Strut2的配置Flask类似Spring的配置,Flask感觉更好

get和post

request.GET['name']和request.POST["name"]

request.args.get("name","")和request.form["q"]

差不多

Flask格式上不统一

restful

使用django-resful框架

使用jsonify

差不多

Flask不需要单建一个app,更直观一些

数据库操作

django集成了对数据库的操作

Flask没集成对数据库的操作要另行直连或使用sqlalchemy

差不多

django复杂很大程度来源于对数据库的集成。

5.2 Flask和Django各自适合使用场景

我们经常会听说这样的一个近乎共识的观点:Django是Python最流行的Web框架但配置比较复杂,Flask是一个轻量级的框架配置比较简单如果项目比较小推荐使用Flask。

进一步来说,Flask的轻量来源其“暂时不用的功能都先不做处理”,Django复杂来源于其“可能用到的功能都先集成”;随着项目规模的扩大最终Django有的东西Flask也都需要有。

所以,如果平时你用python是东用一个库西用一个库,东写一个场景西写一个场景,而不是专门开发web,那么你适合使用Flask,因为这样你的学习成本低及以前的知识都能用上去。

本文主要讲解了Python3+Flask安装使用教程如果想查看更多关于Python3+Flask的知识文章请点击下面相关文章

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qpython3ll使用教程_Python3+Flask安装使用教程详解 的相关文章

  • C++模板基础(六)

    类模板与成员函数模板 使用 template 关键字引入模板 template class B 类模板的声明与定义 翻译单元的一处定义原则 template
  • html5页面刷新时显示新数据,用ajax使网页不刷新就可以显示新数据

    用AjaxPro的 1 在引用中添加引用AjaxPro dll 我用的是这个 支持asp net 1 1 和asp net 2 0 2 web config中建立HttpHandler 3 新建一个类Demo 这个类里面提供了查询数据库和输
  • 怎么在html中复制粘贴图片,如何复制其他网页上的文章和图片

    首先 我们并不建议直接复制别人的内容 以免侵权 但是不排除在某些情况下 需要将其他网页上的内容完整的复制到你的网站中 比如 将自己的微博文章复制到自己的网站 大部分人都知道这个简单的方法 先选中目标文字按CTRL C快捷键 然后再网站后台文
  • AngularJS学习之全局API(应用程序编程接口)

    1 AngularJS全局API用于执行常见任务的Javascript函数集合 比较对象 迭代对象 转换对象 2 全局API函数使用angularJS对象进行访问 以下是通用API函数 angular lowercase 转换字符串为小写
  • Unity用Vuforia做AR实现脱卡效果

    有时在识别目标丢失后我们仍希望虚拟物体能够出现在摄像机前 或者到一个特定的位置 我们能对其进行操作 这就是脱卡功能 自带的脱卡功能应该是ExtendedTracking 允许模型在识别图丢失的时候还存在 位置不变 在丢失的时候的位置 这样也
  • 用Python实现火车票查询(含票价版)

    用Python实现火车票查询 含票价版 写在前面 网上关于用Python3编写火车查询脚本的版本众多 我在前人的基础上编写了自己的这个版本 我觉得的写的这个版本有以下几个特色 1 智能引导输入 我一直比较喜欢这种方式 如果直接做成GUI的图
  • 基于分位数回归的门控循环单元QRGRU时间序列区间预测。(主要应用于风速,负荷,功率)包含评价指标R2,MAE,MBE,区间覆盖率,区间平均宽度。

    清空环境变量 warning off 关闭报警信息 close all 关闭开启的图窗 clear 清空变量 clc 清空命令行 导入数据 时间序列的单列数据 result xlsread 数据集 xlsx 数据分析 num samples
  • Sublime Text配置anaconda环境

    Ref https blog csdn net pptde article details 110791950 spm 1001 2101 3001 6661 1 utm medium distribute pc relevant t0 n
  • docker创建CentOS云主机(docker实践)

    基于Ubuntu操作系统 从零开始构建一套docker虚拟化平台 docker的产物为 容器 docker构建容器 Nginx WEB docker启动虚拟机 创建CentOS云主机 同样是容器 对之前内容的总结熟悉 要求 CentOS 7
  • Android实现裁剪

    Android自定义View实现图片缩放旋转移动裁剪 灰信网 软件开发博客聚合 freesion com SuppressLint AppCompatCustomView public class CorpToView extends Im
  • java前后端传递日期类型不一致的转换问题

    今天在做学生信息的展示时发现展示的日期和数据库中日期不同 本来最开始是用SimpleDateFormat进行转换的 但是转换之后的是字符串类型的 与date类型对不上 所以就上网查了一下 发现可以用 DateTimeFormat和 Json
  • 牛顿法

    牛顿法被称为牛顿 拉夫逊 Newton Raphson 方法 牛顿在17世纪提出用来求解方程的根 假设点x 位函数f x 的根 则f x 0 将函数f x 在点处进行一阶泰勒展开有 假设点为函数f x 的根 则有 那么可以得到 牛顿法通过迭
  • STM8的ADC的五种工作模式

    STM8的ADC的五种工作模式 STM8的ADC是10位的逐次比较型模拟数字转换器 多达16个多功能的输入通道 拥有5种转换模式 转换结束可产生中断 STM8 ADC的初始化顺序如下 1 AD输入通道对应的IO设置为上拉输入 2 配置AD参
  • JVM学习笔记(二)------Java代码编译和执行的整个过程

    http blog csdn net cutesource article details 5904542 Java代码编译是由Java源码编译器来完成 流程图如下所示 Java字节码的执行是由JVM执行引擎来完成 流程图如下所示 Java
  • JAVA实现二叉树的前、中、后序遍历(递归与非递归)

    最近在面试中遇到过问到二叉树后序遍历非递归实现的方法 之前以为会递归的解决就OK 看来还是太心存侥幸 在下一次面试之前 特地整理一下这个问题 首先二叉树的结构定义 java代码如下 public class Node private int
  • 花式获取ssl证书有效期

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pem是什么 二 读取pem证书有效期 1 命令读取 2 C C 读取 3 具体分析 总结 前言 在网络通信过程中 为了数据在传输过程中保持私密 就要用到
  • 数据结构与算法学习指南,可能是最适合新手的了!

    文章目录 先来聊聊学习数据结构与算法 数据结构与算法 听起来就难得不要不要的 数据结构与算法 到底该怎么学 通用性建议 如何学习编程知识 1 你需要的不是一个参考 2 不要钻牛角尖 3 一定要多交流 4 你得多动手 不是让你找人打架 那么针
  • 【java poi】向已存在的excel中追加数据

    1 Maven依赖
  • Mkdocs 存在任意文件读取漏洞

    文章目录 Mkdocs 存在任意文件读取漏洞 1 Mkdocs简介 2 漏洞描述 3 影响版本 4 fofa 查询语句 5 漏洞复现 6 POC EXP 7 整改意见 8 往期回顾 Mkdocs 存在任意文件读取漏洞 1 Mkdocs简介

随机推荐

  • java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装

    很多java初学者 在学到Java面向对象方面的知识点的时候 会觉得这块的知识点真的蛮绕的 一个知识点一个知识点的往外冒 对于初学者来说区分构造器和方法就花费了一整天的时间 现在小编带大家重新过一遍知识点 先背下来一个理念 面向对象程序设计
  • String格式问题:将String格式请求方法时,String格式突然转化为对象的问题

    String格式问题 将String格式请求方法时 String格式突然转化为对象的问题 如上图所示 在使用队列调用方法时传递的参数为 xxxxxx 但是在方法中接收到的参数为 id msg xxxxxx name java lang St
  • 【投资界学堂】创业者如何远程管理异地团队

    转自 http pe pedaily cn 201106 20110627214254 all shtml p1 摘要投资界6月27日消息 美国商业网站Under30CEO近日刊载文章 如何成功的远程管理团队 文章选摘了青年创业理事会提供的
  • MQTT通信在JS中的实现

    MQTT协议 Message Queuing Telemetry Transport 消息队列遥测传输是由 IBM 发布的一种基于发布 订阅范式的 轻量级 消息协议 工作于TCP IP协议族之上 它是一种低开销 低带宽占用的即时通讯协议 可
  • 系统架构设计说明书

    目录 修订历史 文档审批信息 1 简介 1 1 目的 1 2 面向读者 1 3 文档组织 1 4 设计限定 1 5 术语说明 1 6 参考文献 2 项目建设目标和预期成果 2 1 建设目标 2 2 主要预期成果 3 系统非功能需求分析 3
  • 网络安全人才缺口超百万,如今的就业情况怎样?

    2022年9月7日 国家网络安全宣传周准时开始 本次网络安全宣传周和以前一样 主要目的都是为了普及网络安全知识 提高网络安全的防护技能 提升对电信网络诈骗的防范意识 在今年的主题论坛上 工信部发布并解读了 2022年网络安全产业人才发展报告
  • 【Vue】笔记四:浅析Vue三种开发模式:MVC、MVP、MVVM

    首先明确一点 开发模式 设计模式 开发模式 一个开发项目的方式或标准 RMVC 比较常见的三种开发模式 MVC MVP MVVM 1 MVC 个人感觉重点在View MVC全名是Model View Controller 是模型 model
  • 析构函数的注意问题以及用new开出来的空间用free释放会怎样

    大学学了越来越多的算法技术 但却不能忽略本源 编程语言是一切的基础 回过头来看依旧存在许多知识漏洞 返濮方能归真 前几天翻看别人的面经 发现了一个很有意思的问题 用new开出来的空间用free释放会怎样 借此机会 复习一下析构函数 并写了一
  • 接口测试理论

    了解接口测试https www cnblogs com houzhizhe p 6825457 html 什么是接口测试 测试人员通常所说的 接口测试 是针对系统各组件之间接口的一种测试 它属于功能测试 接口能测出普通界面操作难以发现的问题
  • 两个页面之间通过url地址栏进行传值

    第一个页面中有两个图片 当点击的时候能在第二个页面中获得它的属性值 通过location assign在第一个页面进行传值 location href在第二个页面进行接受值 一开始不会传值问题 但对于不知道怎么传值的人来说刚开始摸索 觉得好
  • useEffect详情用法

    1 为什么要使用useEffect 想必大家都是用过vue吧 在vue框架所写的项目中 我们通过在与后端进行数据交互的过程中 通常都是会在生命周期中进行数据的请求 然后将数据返回给页面进行渲染 在React中我们也是这样 但是在函数式组件中
  • Ubuntu18.04下SLEUTH 城市扩张模型编译与使用

    SLEUTH是CA模型的一种实现 由美国加州大学克拉克教授开发 可以模拟城市空间增长与土地利用变化 SLEUTH在Cygwin环境下可以运行 但是我尝试了很久都没有成功 于是我就尝试在Ubuntu系统下运行 编译与使用都非常简单 第一步 下
  • python爬虫系列7--动态网页爬取 selenium phantomjs chromedriver

    selenium phantomjs Selenium Selenium可以根据我们的指令 让浏览器自动加载页面 获取需要的数据 甚至页面截屏 或者判断网站上某些动作是否发生 Selenium自己不带浏览器 不支持浏览器的功能 它需要与第三
  • Android WiFi开发教程(二)——WiFi的搜索和连接

    在上一篇中我们介绍了WiFi热点的创建和关闭 如果你还没阅读过 建议先阅读上一篇文章Android WiFi开发教程 一 WiFi热点的创建与关闭 本章节主要继续介绍WiFi的搜索和连接 WiFi的搜索 搜索wifi热点 private v
  • python知识点

    0 1 python 语法基本知识点 注释 单行注释 这是使用三个单引号的多行注释 标识符 第一个字符必须是字母表中字母或下划线 标识符的其他的部分由字母 数字和下划线组成 标识符对大小写敏感 python保留字 False None Tr
  • python 小知识之 - simple http服务

    python3 9 windows 10 dos python一行命令搭建文件系统 cd d E Software python m http server 8090 浏览器访问 http localhost 8090 即可访问 E Sof
  • php知识点滴

    进度条的简单实现 echo ob flush flush 写日志文件 function mylog logthis file put contents myDebugLog log logthis r n FILE APPEND LOCK
  • EI会议——移动互联网、云计算和信息安全国际学术会议

    移动互联网 云计算和信息安全国际学术会议 International Conference on Mobile Internet Cloud Computing and Information Security 火热征稿中 大会官网 htt
  • PostgreSQL实用示例

    PostgreSQL实用示例 参考PostgreSQL 参考pass 创建表 CREATE TABLE bd peak index song feature lib id int8 NOT NULL features l decimal N
  • qpython3ll使用教程_Python3+Flask安装使用教程详解

    一 Flask安装环境配置 当前我的开发环境是Miniconda3 PyCharm 开发环境其实无所谓 自己使用Python3 Nodepad都可以 安装Flask库 pip install Flask 二 第一个Flask应用程序 将以下