flask web开发学习之初识flask(二)

news2024/9/23 3:20:08

文章目录

        • 一、创建程序实例并注册路由
          • 1. 为视图绑定绑定多个URL
          • 2. 动态URL
        • 二、启动开发服务器
          • 1. 自动发现程序实例
          • 2. 管理环境变量
          • 3. 使用pycharm运行服务器
          • 4. 更多的启动选项
          • 5. 设置运行环境
          • 6. 调试器
          • 7. 重载器


一、创建程序实例并注册路由

app.py

# 从flask包中导入flask类
from flask import Flask

# 实例化Flask类
app = Flask(__name__)


@app.route('/')
def index():
    return '<h1>Hello,Flask!<h1/>'

Flask(name) 会使用当前模块的名称作为参数,以便确定程序的根目录,从而能够找到静态文件夹和模板文件夹。

只需为函数附加app.route()装饰器,并传入URL规则做为参数,我们就可以让URL和函数建立关联。这个过程我们称作注册路由。路由负责管理URL和函数之间的映射,而这个函数则被称为视图函数

1. 为视图绑定绑定多个URL

一个视图函数可以绑定多个URL。比如下面访问’/‘和访问’/hello’都会触发index函数,得到相同响应。

@app.route('/')
@app.route('/hello')
def index():
    return '<h1>Hello,Flask!<h1/>'
2. 动态URL

我们不仅可以为视图函数绑定多个URL,还可以在URL规则中添加变量部分。
使用"<变量>"的形式。flask处理请求时会把变量传入视图函数,我们可以添加参数获取这个变量值。如果用户访问的url中没有添加变量,此时会返回一个404错误,这时我们可以通过添加默认参数defaluts或者设置name的默认值来设置url变量的默认值,以避免404错误。

@app.route('/')
@app.route('/hello/<name>', defaults={'name': "zly"})
def index(name='zly'):
    return '<h1>Hello,%s!<h1/>' % name
二、启动开发服务器

flask内置了一个简单的开发服务器(由依赖包Werkzeug提供),足够在开发环境中使用。

flask run  # 启动开发服务器

在这里插入图片描述
在这里插入图片描述

1. 自动发现程序实例

启动开发服务器后,flask可以自动探测程序实例,自动探测以下规则:

  • 从当前目录寻找app.py和wsgi.py模块,并从中寻找app或application的程序实例。
  • 从环境变量FLASK_APP对应的模块/导入路径寻找名为app或application的程序实例。
2. 管理环境变量

如果安装了python-dotenv模块,那么在使用flask run 或其它命令时它自动从.flaskenv文件和.env文件中加载环境变量。
优先级:
手动设置的环境变量>.env文件>.flaskenv文件
在这里插入图片描述
在.env文件中添加:

FLASK_RUN_HOST=0.0.0.0
FLASK_RUN_PORT=8000
3. 使用pycharm运行服务器

在pycharm中,我们可以使用内置的命令行串口执行命令来启动开发服务器,也可以使用pycharm内置的运行功能。
在这里插入图片描述
按如上进行配置即可。

4. 更多的启动选项
  • 使服务器外部可见
flask run --host=0.0.0.0

添加–host选项,将主机地址设置为0.0.0.0使其对外可见。

  • 改变默认端口
flask run --port=8000

flask提供的服务器默认监听5000端口,可通过传入port参数来改变监听端口。
可通过在环境配置文件中设置FLASK_RUN_HOST与FLASK_RUN_PORT来配置。

5. 设置运行环境

开发环境时指我们在本地编写和测试程序时的计算机环境,而生产环境是指网站部署上线供用户访问时的服务器环境。为了区分运行环境,Flask提供了一个FLASK_ENV的环境变量用来设置环境,默认为production(生产环境)。可以将其改为development(开发环境),这会开启所有支持开发的特性。同时可以通过FLASK_DEBUG来配置调试模式,1为开启,0为关闭。
在.flaskenv文件中写入:

FLASK_ENV=development
FLASK_DEBUG=1

在这里插入图片描述
在开发环境、调试模式下,这时执行flask run 启动程序会自动激活werkzeug内置的调试器以及重载器。

6. 调试器

调试器允许你在错误页面上执行Python代码。单击错误信息右侧的命令行图表,会弹出窗口要求输入PIN码,就是启动服务器时输出的PIN码,输入PIN码后,会有一个包含代码上下文信息的shell,我们可以利用他来调试。
在这里插入图片描述

7. 重载器

当我们对代码进行改动之后,期望的行为就是这些改动立刻作用到程序上。重载器的作用就是监测文件变动,然后重新启动服务器。
在这里插入图片描述
默认会使用werkzeug内置的stat重载器。他的缺点是耗电严重,准确率低。推荐使用Python库Watchdog,安装后会自动使用它来监测文件变动。

pipenv install watchdog --dev  # --dev的作用是声明为开发依赖

如果有单独的css或js文件需要按下F5进行刷新才可。

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

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

相关文章

selenium元素定位方法之xpath

什么是xpath&#xff1f; XPath是XML的路径语言&#xff0c;通俗一点讲就是通过元素的路径来查找到这个标签元素XPath使用路径表达式在XML文档中进行导航 普通语法 注意&#xff01; 1.xpath中的值用引号引起来时&#xff0c;在代码中要注意区分&#xff0c;内单外双&#xf…

Pandas教程07:DataFrame数据中apply参数自定义运算的用法

DataFrame.apply()方法主要用于调用每个Series的函数。此函数可以是一个Python的函数&#xff0c;或者是lambda函数。此函数可以接收一个函数作为输入&#xff0c;并应用于DataFrame的每一列。 以下是一些DataFrame.apply()的示例用法&#xff1a; # Author : 小红牛 # 微信公…

深度解析 Spring Security 自定义异常失效问题:源码剖析与解决方案

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

【docker系列】docker实战之部署SpringBoot项目

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

行行AI董事长李明顺:今天每个人都可以成为AI应用的创业者

“ AI创业的核心在于真正介入到应用层面&#xff0c;AI应该成为真正的应用支撑。 ” 整理 | 王娴 编辑 | 云舒 出品&#xff5c;极新 2023年11月28日&#xff0c;极新AIGC行业峰会在北京东升国际科学园顺利召开&#xff0c;行行AI董事长李明顺先生在会上做了题为《从大模型…

如何做好前端单元测试?字节5年测试老司机是这样说的!

近几年&#xff0c;前端发展越来越迅猛&#xff0c;各类框架层出不穷&#xff0c;前端实现的业务逻辑也越来越复杂&#xff0c;前端单元测试也越来越受重视&#xff0c;包括百度在内的一些大厂在面试中也会问到单元测试相关的题目。那么前端应该如何做好单元测试&#xff1f; 什…

写给步入三十的自己,2023年终总结!

前言 古语有云: “二十而立&#xff0c;三十而肆”&#xff0c;而我在二十岁这些年已经有一定的责任感和独立思考了&#xff0c;但是还未步入三十&#xff0c;所以为了之后有一定的胆识和能力&#xff0c;我在今年做了目前能做的准备。 今年已做事件 工作相关 1.拿到了PMP证书…

2023年大数据场景智能运维实践总结

作者&#xff1a;放纵 引言 在当今数字化世界中&#xff0c;如何充分挖掘和发挥数据价值已经成为了企业成功的关键因素&#xff0c;大数据也成为企业决策和运营的重要驱动力。在《当我们在谈论DataOps时&#xff0c;我们到底在谈论什么》一文中也提到&#xff0c;企业在面对到…

开关电源基础而又硬核的知识

1.什么是Power Supply? Power Supply是一种提供电力能源的设备&#xff0c;它可以将一种电力能源形式转换成另外一种电力能源形式&#xff0c;并能对其进行控制和调节。 根据转换的形式分类&#xff1a;AC/DC、DC/DC、DC/AC、AC/AC 根据转换的方法分类&#xff1a;线性电源、…

Docker篇之利用docker搭建ftp服务器可实现多用户上传

一、前言 场景&#xff1a;公司需要搭建FTP服务器&#xff0c;供内网之前可以互相传递数据&#xff0c;安全稳定&#xff0c;需要满足开通多个账号&#xff0c;每个用户上传的文件有自己对应的文件目录。 这里建议&#xff1a;用户目录Disk尽量大一点&#xff0c;避免因为空间不…

滴滴2023.11.27P0级故障技术复盘回顾(k8s的的错?)

本文从滴滴官方恢复及技术公众号带大家从技术角度复盘这次事故 目录 1. 背景 2. 滴滴官方消息 3. 问题分析及定位 4.网传的k8s及解析 5.k8s引发的思考&#xff1a;举一反三&#xff0c;怎么避免再次出现 6.近段时间其他平台崩溃回顾 1. 背景 11 月 27 晚约 10 点&#xf…

【Openstack Train安装】六、Keystone安装

OpenStack是一个云计算平台的项目&#xff0c;其中Keystone是一个身份认证服务组件&#xff0c;它提供了认证、授权和目录的服务。其他OpenStack服务组件都需要使用Keystone来验证用户的身份和权限&#xff0c;并且彼此之间需要相互协作。当一个OpenStack服务组件接收到用户的请…

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「内网穿透」

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

智安网络|发现未知风险,探索渗透测试的奥秘与技巧

在当今信息时代&#xff0c;网络安全已成为组织和个人面临的重大挑战。为了保护网络系统的安全&#xff0c;渗透测试成为一种重要的手段。 一、渗透测试的基本原理 渗透测试是通过模拟黑客攻击的方式&#xff0c;对目标系统进行安全评估。其基本原理是模拟真实攻击者的思维和行…

特征变换1

编译工具&#xff1a;PyCharm 有些编译工具不用写print可以直接将数据打印出来&#xff0c;pycharm需要写print才会打印出来。 概念 1.特征类型 特征的类型&#xff1a;“离散型”和“连续型” 机器学习算法对特征的类型是有要求的&#xff0c;不是任意类型的特征都可以随意…

数据结构:图文详解顺序表的各种操作(新增元素,查找元素,删除元素,给指定位置元素赋值)

目录 一.顺序表的概念 二.顺序表的实现 新增元素 默认尾部新增 指定位置添加元素 查找元素 查找是否存在 查找元素对应的位置 查找指定位置对应的元素 删除元素 获取顺序表长度 清空顺序表 一.顺序表的概念 在线性数据结构中&#xff0c;我们一般分为俩类&#xf…

【电源专题】DC/DC电源FB分压电阻设计注意事项

在DC/DC电源中我们不可避免的会遇到FB分压电阻的取值,PCB设计等问题。如下所示随意打开一份同步降压稳压器规格书TPS56320X,规格书中的简化电路原理图就已经存在VFB管脚上的两个分压电阻。 很多工程师朋友们会误认为分压电阻只是简单的将输出电压缩小到参考电压,通过此电压来…

网狐类源码游戏配置数据库数据(一键配置网狐数据库)

网狐类源码游戏配置数据库数据&#xff08;一键配置网狐数据库&#xff09; 一般拿到网狐的源码或组件&#xff0c;需要先附加或配置数据库&#xff0c;以下为全部需要更改数据的地方&#xff0c;这里以荣耀系列版本数据库为例&#xff1a; 1. 数据库设置 [RYPlatformDB].…

文档理解的新时代:LayOutLM模型的全方位解读

一、引言 在现代文档处理和信息提取领域&#xff0c;机器学习模型的作用日益凸显。特别是在自然语言处理&#xff08;NLP&#xff09;技术快速发展的背景下&#xff0c;如何让机器更加精准地理解和处理复杂文档成为了一个挑战。文档不仅包含文本信息&#xff0c;还包括布局、图…

STM32CubeIDE(CUBE-MX)----快速移植FreeRTOS实战

文章目录 前言一、Freertos可视化配置二、生成代码三、实验现象总结 前言 FreeRTOS&#xff08;Real-Time Operating System&#xff09;是一个开源的实时操作系统内核&#xff0c;专注于嵌入式系统。它提供了一套用于管理任务、调度器、内存管理等的实时操作系统功能&#xf…