《Flask Web 开发指南 pt.2》

这篇具有很好参考价值的文章主要介绍了《Flask Web 开发指南 pt.2》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈喽大家好,我是咸鱼

 文章来源地址https://www.toymoban.com/news/detail-403444.html

《Flask Web 开发指南 pt.1》中,咸鱼跟大家介绍了 Flask 的由来——诞生于一个愚人节玩笑,简单介绍了一些关于 Flask 的概念,并且编写了一个简单的 Flask 程序

 

在编写 Flask 程序的时候,你需要注意你的程序文件不要命名为 flask.py,建议命名为 app.py 或者 wsgi.py

 

但如果你的程序不是叫 app.py 或者 wsgi.py,那么你就需要设置环境变量 FLASK_APP 的值为程序名字

 

设置环境变量有两种方法,在《开发指南 pt.1》有提到,大家可以去看一下

《Flask Web 开发指南 pt.2》

 

 运行环境

我们知道,代码的运行环境一般分为开发环境和生产环境

 

开发环境指的是我们在本地编写和测试程序时的计算机环境

 

而生产环境也叫线上环境,指的是程序部署在互联网能够对外提供服务且供用户使用的环境

 

在 Flask 中,Flask 会根据运行环境的不同来改变相应的行为和设置,建议小伙伴们在编写 Flask 程序的时候将运行环境设置成开发环境

《Flask Web 开发指南 pt.2》

 

因为在开发环境下,Flask 会开启调试模式(Debug Mode),这时候执行 flask run启动程序会激活 Werkzeug 内置的调试器和重载器,这能更好地帮助我们去 debug

 

  • 调试器(debugger)

当你的程序报错时,网页会生成详细的错误信息,而调试器允许你在错误页面上执行代码

《Flask Web 开发指南 pt.2》

 

 

首先单击错误信息右侧的命令行图标,然后会弹出一个窗口要求你输入 PIN 码,这个 PIN 码在你执行 flask run 命令的时候程序会给你

《Flask Web 开发指南 pt.2》

 

 

 《Flask Web 开发指南 pt.2》

 

 

 

 《Flask Web 开发指南 pt.2》

 

输入 PIN 码之后,点击错误堆栈的某个节点右侧的命令行图标,就会出现一个包含代码执行上下文信息的 Python Shell

《Flask Web 开发指南 pt.2》

 

 

  • 重载器(reloader)

重载器的作用就是检测程序文件的变动,然后重启。当修改了代码之后,你会在终端看到下面的输出

《Flask Web 开发指南 pt.2》

 

这意味着每次修改完代码不需要手动重启 flask 程序

 

PS

网上有些 flask 教程可能告诉你按照下面的方式将 Flask 运行环境将设置成开发环境

《Flask Web 开发指南 pt.2》

 

这个环境变量在早期版本的 flask 中是适用的,但是后面被弃用了,不建议使用这个环境变量,否则可能会 warning

 《Flask Web 开发指南 pt.2》

 

 相关链接:https://github.com/docker/docs/issues/15571

 

URL 路由

注册路由

 《Flask Web 开发指南 pt.2》

 

在上面这段代码中,我们通过 route() 装饰器将根地址与 index() 函数绑定在一起,当用户访问

 

http://localhost:5000/ 的时候,就会显示 index 函数的返回结果 '<h1>Hello,Flask!</h1>'

 

通过 route() 装饰器将 URL 与函数建立关联的这个过程叫做注册路由,路由负责管理 URL 与函数之间的映射

 

即我访问哪个 URL (前提是这个 URL 已经与函数建立起了关联),Flask 就去对应的函数下执行并返回结果给我

 

这个函数被称作视图函数,视图函数返回的结果不仅仅是一串字符串这么简单,它还能够返回各种链接、表单、HTML 文件等等

 

上面的代码中,'/' 为相对 URL,index() 函数为视图函数

 

一个 Web 程序其实就是用户点击不同的 URL 链接,程序内部去执行对应的函数然后返回对应的结果给用户。可以说,大部分 Flask 的基本模式就是这一个个注册路由的实现

 

为一个视图函数绑定多个 URL

《Flask Web 开发指南 pt.2》

 

现在无论是访问 http://localhost:5000/http://localhost:5000/home 还是 http://localhost:5000/index ,返回的都是同一个值

 

动态URL

除此之外,我们还可以在 URL 里定义变量,实现动态 URL

 

添加变量使用 <变量名> 的形式

 

例如 /user/<name> ,flask 在处理请求时会把这个变量传入视图函数里面

《Flask Web 开发指南 pt.2》

 

上面的代码中 user_page() 视图的 URL 为 /user/<name>,那么像 /user/edison、/user/fish 的请求都会触发这个函数

 《Flask Web 开发指南 pt.2》

 

 《Flask Web 开发指南 pt.2》

 

但是如果你访问的时候没有添加变量(比如访问 /user ),那么会返回一个 404 错误,该如何解决呢?

 

常见的方法是设置默认值,当访问的 URL 里面没有带变量时,就会使用默认值。设置默认值有两种方法:

 

  • 在装饰器里面使用 default 参数添加默认值

请注意,你需要添加两条 URL 规则,这样当用户访问 /user 时 flask 才能找到对应的视图函数

《Flask Web 开发指南 pt.2》

 

  • 在视图函数里面添加默认值

《Flask Web 开发指南 pt.2》

 

对于 URL 变量,flask 支持在 URL 里对变量设置处理器,对变量进行预处理

《Flask Web 开发指南 pt.2》

 

 转换器类型:

《Flask Web 开发指南 pt.2》

 

 

 

关于 URL 后面带斜杠的问题

这是一个常见但是也容易混淆的问题

《Flask Web 开发指南 pt.2》

 

上面的代码里面,这两条 URL 的尾部一个添加了斜杠一个没有添加,有什么区别呢?

  • projects() 视图函数的 URL 尾部有一个斜杠,路径看起来像一个目录。如果你访问 /projects,Flask 会自动帮你重定向到 /projects/  ,即无论是访问/projects/  还是 /projects ,都能正常返回

  • about() 视图函数的 URL 尾部没有斜杠,路径看起来像一个文件。如果你访问 /about/  ,Flask 会返回一个 404 错误。因为这样可以保持 URL 唯一,并帮助搜索引擎避免重复索引同一页面

 

端点

上面我们讲过,在编写 Flask 程序的时候会将 URL 与 视图函数进行关联(注册路由)

即通过将不同 URL 关联到不同的视图函数上,以此来实现不同的业务逻辑

但其实在 Flask 中,URL 首先被映射到端点上,然后再映射到视图函数

《Flask Web 开发指南 pt.2》

 

端点通常用来标记一个视图函数以及对应的 URL,默认值是视图函数的函数名

《Flask Web 开发指南 pt.2》

 

 在上面的代码中,端点即视图函数的名称hello

 

当然你也可以修改端点名(通常不建议这么做)

《Flask Web 开发指南 pt.2》

 

当访问 hhttp://localhost:5000/hello 时,URL 首先映射到端点 say_hello 上,然后与端点 say_hello 相关联的视图函数 hello() 就会处理这个请求

 

在 web 程序中,URL 无处不在。如果我们在编写 web 程序的时候使用 URL 都是用硬编码方式,那么就会大大降低代码的易用性

 

硬编码是指在写代码过程中将变量用一个固定数值表示,如果后续想要修改这个变量就非常困难

 

比如在 flask 中,如果你修改了某个路由的 URL,那么在其他调用到这个 URL 的视图函数里面的 URL 都需要修改,很麻烦

 

一个常用的解决方法就是使用 Flask 中的 url_for() 函数来获取 URL

《Flask Web 开发指南 pt.2》

 

url_for() 函数中第一个参数为端点,这说明端点通常用作反向查询 URL 地址

《Flask Web 开发指南 pt.2》

 

在上面的代码中,端点即视图函数的函数名 index,通过调用 url_for() 函数就可以获得对应的 URL
《Flask Web 开发指南 pt.2》

 

如果你的视图函数绑定的是动态 URL,那么需要在 url_for() 函数中添加相关参数

《Flask Web 开发指南 pt.2》

 

上面所说的 URL 都是相对 URL(URL 中的 path 部分),如果你想获得绝对 URL,需要在 url_for() 函数中添加相关参数 _external=True

《Flask Web 开发指南 pt.2》

 

 


感谢阅读,喜欢作者就动动小手[一键三连],这是我写作最大的动力!

 

到了这里,关于《Flask Web 开发指南 pt.2》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023年 Web3开发学习路线全指南

    Web3是一个包含了很多领域的概念,不讨论币圈和链圈的划分,Web3包括有Defi、NFT、Game等基于区块链的Dapp应用的开发;也有VR、AR等追求视觉沉浸感的XR相关领域的开发;还有基于区块链底层架构或者协议的开发。 这篇文章给出的学习路线图是第一种类型: 针对Dapp应用的开发

    2024年02月11日
    浏览(46)
  • FastAPI完全指南:实现高效、安全的Web开发

    在快速发展的互联网时代,高效的Web开发变得尤为重要。Python作为一门广受欢迎的编程语言,其众多Web框架中,FastAPI凭借其出色的性能和易用性,成为了一个炙手可热的选择。FastAPI是一个用于构建API的现代、高性能的Web框架,它基于Python 3.6+的类型提示,提供了快速、直观且

    2024年02月03日
    浏览(43)
  • Web3 游戏开发者的数据分析指南

    作者:lesley@footprint.network 在竞争激烈的 Web3 游戏行业中,成功不仅仅取决于游戏的发布,还需要在游戏运营过程中有高度的敏锐性,以应对下一次牛市的来临。 人们对 2024 年的游戏行业充满信心。A16Z GAMES 和 GAMES FUND ONE 的营销负责人 Doug McCracken 表示:“最近市场上很多人在

    2024年01月24日
    浏览(59)
  • 【Web开发指南】MyEclipse XML编辑器的高级功能简介

    MyEclipse v2023.1.2离线版下载 1. 在MyEclipse中编辑XML 本文档介绍MyEclipse XML编辑器中的一些可用的函数,MyEclipse XML编辑器包括高级XML编辑,例如: 语法高亮显示 标签和属性内容辅助 实时验证(当您输入时) 文档内容的源(Source)视图、设计(Design)视图和大纲(Outline)视图 文档

    2024年02月12日
    浏览(43)
  • 开发者新手指南:Web3 技术堆栈 & 平均薪资盘点

    “Web3 开发究竟包含哪些技术栈?” “转型做 Web3 开发的薪资水平如何?” 相信每个刚进入或者准备进入 Web3 的开发者,都会在不同时刻有关于 Web3 技术栈、Web3 薪资待遇的疑问。本文将汇总 目前被大部分认可和公开的 Web3 技术栈定义、Web3 专业求职/招聘网站的薪资数据 ,

    2024年02月02日
    浏览(63)
  • 构建安全高效的Web应用程序:IntelliJ IDEA的后端开发指南

    在当今互联网时代,Web应用项目的开发变得越来越重要。为了提供更好的用户体验和良好的系统可扩展性,采用前后端分离的设计模式已成为众多开发团队的首选。 前后端分离是一种软件架构模式,将传统的单体应用中的前端和后端部分进行解耦,使其成为独立的两个部分。

    2024年02月03日
    浏览(62)
  • Web3 开发指南:使用 NFTScan NFT API 构建一个 NFT 链上追踪器

    对于大多数 Web3 团队来说,构建一个完整的链上 NFT 数据追踪系统是一项具有挑战性的任务,构建一个 NFT 链上追踪器更是如此。涉及到处理区块链上的智能合约和交易数据,并将其与外部数据源进行整合和分析工作量是十分巨大的: 区块链数据的复杂性:区块链上的数据结

    2024年02月15日
    浏览(47)
  • 【深入浅出Selenium库的百变玩法】: 掌握Web自动化测试的关键技术和策略,包括元素定位、页面操作、动态内容处理等,适用于初学者和高级开发者的综合指南

    Selenium是一个功能强大的库,支持多种高级操作,如处理多窗口、多标签页、键盘与鼠标事件、滚动操作等。掌握Selenium可以大大提高Web应用的测试效率和覆盖范围。希望这篇文章能帮助你开启Selenium进行自动化测试的新篇章。 Selenium也是一个广泛使用的自动化测试工具,它支

    2024年02月20日
    浏览(63)
  • HarmonyOS鸿蒙开发指南:基于ArkTS开发 音频录制开发指导

    目录 场景介绍 开发步骤 全流程场景 正常录制场景 音频录制的主要工作是捕获音频信号

    2024年01月19日
    浏览(74)
  • HarmonyOS鸿蒙开发指南:基于ArkTS开发 音频渲染开发指导

    目录 场景介绍 音频中断 状态检查 异步操作 开发步骤

    2024年01月16日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包