使用flask开启一个简单的应用

news2024/12/23 6:34:50

Flask是非常流行的 Python Web框架,它能如此流行,原因主要有如下几点:
。有非常齐全的官方文档,上手非常方便。
。有非常好的扩展机制和第三方扩展环境,.工作中常见的软件都会有对应的扩展。自己动手实现扩展也很容易。
。社区活跃度非常高。
。微框架的形式给开发者更大的选择空间。
.Pocoo团队出品,Flask和相关依赖(Jinja2、Werkzeug )的设计很优秀。比如使用装饰器配置路由、用Blueprint实现模块化、请求/应用上下文等。
我们可以从Flask框架入手,之后再学习Django框架

1、开启一个简单的应用

1、安装Flask

pip install Flask

2、开始一个简单的应用,创建一个文件web.py

#--coding:utf-8
from flask import Flask

app = Flask(__name__)

@app.route('/show/index')
def func():
    return "我爱我的祖国"

if __name__ == '__main__':
    app.run()

运行web.py
在这里插入图片描述
在浏览器打开,输入http://127.0.0.1:5000/show/index 看到如下效果:
在这里插入图片描述
下面我们来解释下上面几行代码
第1行 ,#–coding:utf-8 :是声明Python源文件编码的语法。该编码信息后续会被Python解析器用于解析源文件。如果没有特殊的原因,应该统一地使用utf-8,而不要使用gb18030,gb2312等类型。
第2行,引入Flask类,Flask类实现了一个wSGI应用。
第4行,app是 Flask的实例,它接收包或者模块的名字作为参数,但-般都是传递__name__。让flask.helpers.get_root_path函数通过传入这个名字确定程序的根目录,以便获得静态文件和模板文件的目录。
第6~8行,使用app.route装饰器会将URL和执行的视图函数的关系保存到app.url_map属性上。处理URL和视图函数的关系的程序就是路由,这里的视图函数就是func。装饰器里面的url就是我们访问的路径。
第11行,执行app.run就可以启动服务了。默认Flask只监听虚拟机的本地127.0.0.1这个地址,端口为5000。如果要修改端口就需要加参数 app.run(host=‘0.0.0.0’,port=8080)。0.0.0.0表示监听所有地址,这样就可以在本机访问了。指定了8080端口后,浏览器要访问 http://127.0.0.1:8080/show/index
注意,默认的app.run的启动方式只适合调试,不要在生产环境中使用,生产环境应该使用Gunicorn或者uwSGI

2、配置管理

项目中的一些全局的配置我们应该存放到一个文件中,app.config支持多种更新配置的方式。假如现在有个config.py的配置文件,其中的内容如下:
A=1
方式一:

app.config.from_object('config')   #通过字符串的模块名字
#或者引用之后直接传入模块对象
import comfig
app.config.from_object(config)

方式二:
通过文件名字加载。直接传入文件名字,但是不限于只使用.py后缀的文件名。

app.config.from_pyfile('config.py', silent=True) #默认当配置文件不存在时会抛出异常,使用silent=True的时候只是返回False,但不会抛出异常

动态url 规则

URL 规则可以添加变量部分,也就是将符合同种规则的URL抽象成一个URL模式,如/item/1/ 、/litem/2/、/item/3.…我们就得这样写:

#--coding:utf-8
from flask import Flask

app = Flask(__name__)

@app.route('/item/<id>/')
def item(id):
    return 'Item:{}'.format(id)

if __name__ == '__main__':
    app.run()

运行后:
在这里插入图片描述
在这里插入图片描述
尖括号中的内容是动态的,凡是匹配到/item/前缀的URL都会被映射到这个路由上,在内部把id作为参数而获得。
它使用了特殊的字段标记<variable_name>,默认类型是字符串。如果需要指定参数类型需要标记成converter:variable_name这样的格式,converter有下面几种:

  • string:接受任何没有斜杠“/”的文本(默认)。
  • int:接受整数。
  • float:同 int,但是接受浮点数。
  • path:和默认的相似,但也接受斜杠。
  • uuid:只接受uuid字符串。
  • any:可以指定多种路径,但是需要传入参数。

调试模式

虽然app.run这样的方式适用于启动本地的开发服务器,但是每次修改代码后都要手动重启的话,比较麻烦。如果启用了调试模式,服务器会在代码修改后自动重新载入,并在发生错误时提供一个能获得错误上下文及可执行代码的调试页面
有两种途径来启动调试模式:
1、直接在应用对象上设置:

 app.debug = True
    app.run()

2、作为run的参数传入

 app.run(debug=True)

启动后

F:\myfile\python\code\webproject\venv\Scripts\python.exe F:/myfile/python/code/webproject/web.py
 * Serving Flask app 'web'
 * Debug mode: on
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
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 343-485-244

当程序有异常而进入错误堆栈模式,第一次点击某个堆栈想查看对应变量的值的时候,浏览器会弹出一个要求你输入这个PIN值的输入框。这个时候需要在输人框中输入343-485-244,然后确认,Werkzeug会把这个PIN作为cookie的一部分存起来(失效时间默认是8小时),失效之前不需要重复输入。而这个PIN码攻击者是无法知道的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/754827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【可解释学习】PyG可解释学习模块torch_geometric.explain

PyG可解释学习模块torch_geometric.explain PhiloshopyExplainerExplanationsExplainer AlgorithmExplanation Metrics参考资料 torch_geometric.explain是PyTorch Geometric库中的一个模块&#xff0c;用于解释和可视化图神经网络&#xff08;GNN&#xff09;模型的预测结果。…

RestClient操作文档和DSL查询语法

一、 文档操作 1、新增文档 本案例中&#xff0c;hotel为索引库名&#xff0c;61083为文档idTestvoid testAddDocument() throws IOException {// 1.根据id查询酒店数据Hotel hotel hotelService.getById(61083L);// 2.转换为文档类型HotelDoc hotelDoc new HotelDoc(hotel…

【数据结构】二叉树——链式结构

目录 一、前置声明 二、二叉树的遍历 2.1 前序、中序以及后序遍历 2.2 层序遍历 三、节点个数以及高度 3.1 节点个数 3.2 叶子节点个数 3.3 第k层节点个数 3.4 二叉树的高度/深度 3.5 查找值为x的节点 四、二叉树的创建和销毁 4.1 构建二叉树 4.2 二叉树销毁 4.3 …

2023年7月14日,ArrayList底层

集合框架图&#xff1a; 集合和数组的区别 AarrayList ArrayList底层实现原理 ArrayList的底层实现是基于数组的动态扩容。 初始容量&#xff1a;当创建一个新的ArrayList对象时&#xff0c;它会分配一个初始容量为10的数组。这个初始容量可以根据需求进行调整。 //表示默认的…

在Python中优雅地用多进程:进程池 Pool、管道通信 Pipe、队列通信 Queue、共享内存 Manager Value

Python 自带的多进程库 multiprocessing 可实现多进程。我想用这些短例子示范如何优雅地用多线程。中文网络上&#xff0c;有些人只是翻译了旧版的 Python 官网的多进程文档。而我这篇文章会额外讲一讲下方加粗部分的内容。 创建进程 Process&#xff0c;fork 直接继承资源&am…

zigbee DL-20无线串口收发模块使用(双车通讯,电赛模块推荐)

前言 &#xff08;1&#xff09;通常有时候&#xff0c;我们可能会需要让两个MCU进行通讯。而zigbee是最适合两个MCU短距离通讯的模块。他使用极其简单&#xff0c;非常适合两款MCU之间的进行数据交互。 &#xff08;2&#xff09;在各类比赛中&#xff0c;经常出现需要两个MCU…

独立看门狗 IWDG

独立看门狗介绍 Q&#xff1a;什么是看门狗&#xff1f; A&#xff1a;可以理解为对于一只修勾的定时投喂&#xff0c;如果不给它吃东西就会狂叫&#xff0c;因此可以通过观察修勾的状态来判断喂它的人有没有正常工作。 在由单片机构成的微型计算机系统中&#xff0c;由于单…

【业务功能篇44】Mysql 海量数据查询优化,进行分区操作

业务场景&#xff1a;当前有个发料表&#xff0c;随着业务数据量增多&#xff0c;达到了几千万级别水平&#xff0c;查询的效率就越来越低了&#xff0c;针对当前的架构情况&#xff0c;我们进行了分区的设置&#xff0c;通过对时间字段&#xff0c;按年月&#xff0c;一个月作…

ios 启动页storyboard 使用记录

本文简单记录ios启动页storyboard 如何使用和注意事项。 xcode窗口简介 以xcode14为例&#xff0c;新建项目如下图&#xff0c;左边文件栏中的LaunchScreen.storyboard 为默认启动页布局。窗口中间部分是storyboard中的组件列表&#xff0c;右侧为预览&#xff0c;可以看到渲…

H3C-Cloud Lab-实验-DHCP实验

实验拓扑图&#xff1a; 实验需求&#xff1a; 1、按照图示为R1配置IP地址 2、配置R1为DHCP服务器&#xff0c;提供服务的地址池为192.168.1.0/24网段&#xff0c;网关为192.168.1.254&#xff0c;DNS服务器地址为202.103.24.68&#xff0c;202.103.0.117 3、192.168.1.10-1…

Camtasia Studio 2023 最新中文版,camtasiaStudio如何添加背景音乐

Camtasia2023的视频编辑工具可以帮助用户剪辑、裁剪、旋转、调整大小、添加特效、混合音频等。用户还可以使用Camtasia2023的字幕功能添加字幕和注释&#xff0c;以及使用其内置的特效和转场来提高视频的视觉效果。 Camtasia Studio 2023新功能介绍 的光标增强 由于光标在屏幕…

解决win10电脑无法访问局域网内其它共享文件问题

问题描述 今天需要上传文件到一个共享的局域网文件夹里&#xff0c;在我的电脑和浏览器访问//192.168.0.16//public都提升访问受限&#xff0c;开始以为是因为用户没授权&#xff0c;后来一般沟通后&#xff0c;发现其它电脑都能正常访问的&#xff0c;所以确定是自己电脑配置…

Caerulein,17650-98-5,雨蛙肽,以三氟醋酸盐形式提供的十肽分子

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ Caerulein |雨蛙素&#xff0c;雨蛙肽&#xff0c;蓝肽| CAS&#xff1a;17650-98-5 | 纯度&#xff1a;95% ------雨蛙素结构式---- ----试剂参数信息--- CAS号&#xff1a;17650-98-5 外观&#xff08;Appearance&a…

java中使用POI生成Excel并导出

注&#xff1a;本文章中代码均为本地Demo版本&#xff0c;若后续代码更新将不会更新文章 需求说明及实现方式 根据从数据库查询出的数据&#xff0c;将其写入excel表并导出 我的想法是通过在实体属性上写自定义注解的方式去完成。因为我们在代码中可以通过反射的方式去获取实体…

js小写金额转大写 自动转换

// 小写转为大写convertCurrency(money) {var cnNums [零, 壹, 贰, 叁, 肆, 伍, 陆, 柒, 捌, 玖]var cnIntRadice [, 拾, 佰, 仟]var cnIntUnits [, 万, 亿, 兆]var cnDecUnits [角, 分, 毫, 厘]// var cnInteger 整var cnIntLast 元var maxNum 999999999999999.9999var…

vulnhub靶场red:1教程

靶场搭建 靶机下载地址&#xff1a;Red: 1 ~ VulnHub 难度&#xff1a;中等 信息收集 arp-scan -l 这里没截图忘记了&#xff0c;就只是发现主机 扫描端口 nmap --min-rate 1000 -p- 192.168.21.130 nmap -sT -sV -sC -O -p22,80 192.168.21.130 先看80端口 看到链接点一…

怎么又快又准的确定业务系统属于等保几级?

等保2.0政策已经落地严格执行了一段时间&#xff0c;但大家对于等保政策还有很多不清楚。这不不少人在问&#xff0c;怎么又快有准的确定业务系统属于等保几级&#xff1f; 怎么又快又准的确定业务系统属于等保几级&#xff1f; 【回答】&#xff1a;根据《信息安全等级保护管…

AtcoderABC255场

A - You should output ARC, though this is ABC.A - You should output ARC, though this is ABC. 题目大意 给定整数R和C以及一个2x2矩阵A&#xff0c;需要输出A R,C的值。 思路分析 简单的矩阵查找。根据给定的索引R和C&#xff0c;找到矩阵A中相应位置的元素&#xff0c…

实例014 OutLook界面

实例说明 程序主界面包括菜单栏、工具栏、状态栏和树状视图。OutLook界面美观、友好&#xff0c;是一个很实用的程序主界面&#xff0c;并且菜单栏和工具栏是可移动的。运行本例效果如图1.14所示。 图1.14 Out Look界面 技术要点 一般程序的菜单栏和工具栏是不可移动的&…

【Ajax】笔记-服务端响应JSON数据

服务端响应JSON数据 构建测试案例 键盘按键触发请求服务端&#xff1a; 键盘按下触发事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,…