Flask 配置 404、500 错误页面

更新时间 2023-02-20 22:51:51

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观



我正在尝试使用 Scrapy 从商业网站上进行抓取。对于价格标签,我想删除“$”,但我当前的代码不起作用。


 def parse ( self, response ):
for sel in response.xpath( '//section[@class="items-box"]' ):
item = ShopItem()
item[ 'name' ] = sel.xpath( 'a/div/h3/text()' ).extract()
item[ 'price' ] = sel.xpath( 'a/div/div/div[1]/text()' ).extract().replace( "$" , "" )
yield item
AttributeError: 'list' object has no attribute 'replace'

使用 Scrapy 时删除字符的合适方法是什么?



大家好,我是小哈~

本小节中给大家讲下 Flask 中如何快速配置 400、500 错误页面。

Flask 配置 404、500 错误页面Flask 配置 404、500 错误页面

前言

一个 Web 应用中,经常会出现在某个资源由于某种原因被编辑删除,或者 Web 应用内部出现错误的情况,这时,当用户访问时,我们需要给予一个页面反馈,不然用户就会觉得莫名其妙。

配置 404 页面

当用户访问一个不存在、或者已经被删除的页面时,需要响应浏览器 404 错误码,并向用户展示该资源已经丢失页面。

首先,需要在 templates 模板文件夹下创建 404 页面,小哈这里创建了一个简单的 404 页面用作演示。

实际的 Web 应用中,通常是一个样式很好看的 404 页面,可以添加一些炫酷的动画啥的。

<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>404:该页面找不到啦!</h1>
  </body>
</html>

然后,在 Flask 应用中创建一个用于展示 404 错误页面的视图函数,并为其添加 @app.errorhandler(404) 装饰器,返回值是我们刚刚创建的 404.html 页面,以及 404 错误码:

@app.errorhandler(404)
def show_404_page(e):
    return render_template('404.html'), 404

配置成功后,重启 Flask 应用,当访问不存在的 URL 时,就会成功看到该 404 页面啦,比如访问一个不存在的 /quanxiaoha 路由:

Flask 配置  404 错误页面Flask 配置 404 错误页面

配置 500 页面

500 错误页面的展示一般出现在 Web 应用内部出现了某个错误,配置方式和 404 差不多,同样的,先在 templates 模板文件夹下创建一个 500.html 页面用于展示。

<!doctype html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    <h1>500:发生了内部错误!</h1>
  </body>
</html>

然后,在 Flask 应用中创建一个用于展示 500 错误页面的视图函数:

@app.errorhandler(500)
def show_500_page(e):
    return render_template('500.html'), 500

为了验证 500.html 错误页面能够被成功展示,小哈这里定义了一个会导致异常的视图函数:

@app.route('/index')
def index():
    # 这行代码执行后,会提示分母不能为零的错误
    i = 4 / 0
    return render_template('index.html', name='犬小哈教程')

然后,我们访问 /index URL, 会看到成功展示了 500.html 错误页面:

Flask 配置 500 错误页面Flask 配置 500 错误页面

同时,在 Flask 控制台中确实看到了异常堆栈信息:

ZeroDivisionError: division by zero

说明 Flask 内部捕获了异常,并执行了展示 500 错误页面的视图函数。