Day 22 实作 main_bp

前言

今天基本上进入了最重要也是最後的一个阶段,但相对来说今天的内容会比较轻松,量也比较少。

main_bp

事不宜迟,就直接来看程序码,views.py 是昨天在 app/main/ 建立的那个,HTML 都要放在 templates/ 里面。

error.html

{% extends "base.html" %}

{% block title %}{{ code }}{% endblock %}

{% block content %}
<div>
    <h1>{{ code }}</h1>
    <p>{{ name }}</p>
</div>
{% endblock %}

index.html

{% extends "base.html" %}

{% block title %}Index Page{% endblock %}

{% block content %}
<p>Index Page</p>
{% endblock %}

views.py


from flask import render_template, redirect, url_for
from werkzeug.exceptions import HTTPException
from . import main_bp


@main_bp.route("/", methods=["GET"])
def index_page():
    return render_template("index.html")


@main_bp.app_errorhandler(401)
def handler_401(e):
    return redirect(url_for("user.login_page"))


@main_bp.app_errorhandler(HTTPException)
def handler(e):
    return render_template("error.html", code=e.code, name=e.name), e.code

先看到前面两个 HTML,他们都是继承之前写好的 base.html,所以都非常简单。第二个没什麽好说的,基本上就自由发挥。第一个比较麻烦,他有 codename 两个从 render_template 传过来的变数,等等在下面就会看到,在这一页基本上就是简单地把它们显示出来而已。

接下来看到 views.py,一样第一个路径就跳过,没什麽好说的。第二个是处理 401 错误的 handler,我们在这边让他重新导向到登入页面。最後一个 handler 处理所有错误,并且使用了 e.codee.name 来把一些内容传入,他们分别是 HTTP status code 和该错误的说明,像是 Not Found 之类的。在最後,我们把 e.code 当成回传的 HTTP status code。

References

How to handle ordering of flask error handlers


<<:  [Day 09 - JS] 网页第三大核心技术 — Javascript

>>:  TailwindCSS 从零开始 - 伪类变体 Pseudo-Class Variants

Day 12 - Spring Boot & MyBatis

MyBatis 可以简单的使用注解或XML 的方式进行配置和对映,通过将引数对映到配置的SQL 形成...

DAY13 特徵工程-资料标准化与降维

一、为何要做标准化 以最简单的方式来说,一份资料中,不可能每个特徵的范围都是一样的,当我们需要拿两笔...

MockK正式上场,似曾相识的场景

其实在程序考试结束後,连接着两人关系的补课也该跟着结束了。 但是诗忆彷佛没注意到这点似的,带着早就准...

[Q&A] 10 资安制度运行与企业经营关键因素

会议上话说的很多,出席或列席的人没有听进心里、用心思考过仍属於无效的沟通。 踏踏实实的做好小事情,并...

AWS架构完善的五个支柱

Amazon从以下SPORC角度提供了关於架构良好的AWS解决方案的良好文件: 安全 (Secur...