mini-Web框架:模板替换与路由列表功能开发 | 黑马程序员

Posted 黑马程序员官方

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mini-Web框架:模板替换与路由列表功能开发 | 黑马程序员相关的知识,希望对你有一定的参考价值。

一、模板替换功能开发

1. 读取股票信息模板文件

framework.py示例代码:

# 获取首页数据
def index():
    # 响应状态
    status = "200 OK";
    # 响应头
    response_header = [("Server", "PWS2.0")]

    # 打开模板文件,读取数据
    with open("template/index.html", "r") as file:
        file_data = file.read()

2. 使用模拟数据替换模板变量

framework.py示例代码:

# 获取首页数据
def index():
    # 响应状态
    status = "200 OK";
    # 响应头
    response_header = [("Server", "PWS2.0")]

    # 1. 打开模板文件,读取数据
    with open("template/index.html", "r") as file:
        file_data = file.read()

    # 处理后的数据, 从数据库查询
    data = time.ctime()
    # 2. 替换模板文件中的模板遍历
    result = file_data.replace("%content%", data)

    return status, response_header, result

二、路由列表功能开发

1. 路由的介绍

接着上面程序的判断场景,假如咱们再处理一个个人中心的动态资源请求非常简单,再添加一个函数和更加一个分支判断就可以实现了。

framework.py 示例代码:

# 获取个人中心数据
def center():
    # 响应状态
    status = "200 OK";
    # 响应头
    response_header = [("Server", "PWS2.0")]

    # 打开模板文件,读取数据
    with open("template/center.html", "r") as file:
        file_data = file.read()

    # 处理后的数据, 从数据库查询
    data = time.ctime()
    # 替换模板文件中的模板遍历
    result = file_data.replace("%content%", data)

    return status, response_header, result


# 处理动态资源请求
def handle_request(env):
    # 获取动态请求资源路径
    request_path = env["request_path"]
    print("接收到的动态资源请求:", request_path)

    if request_path == "/index.html":
        # 获取首页数据
        result = index()
        return result
    elif request_path == "/center.html":
        # 获取个人中心数据
        result = center()
        return result
    else:
        # 没有找到动态资源
        result = not_found()
        return result

那如果咱们的框架处理的页面请求路径再多一些,比如:5个路径判断,大家可能感觉条件分支完全可以胜任,如果是40个甚至更多呢? 如果这是还是用普通的条件分支简直无法忍受。

解决办法: 可以使用路由

什么是路由?

路由就是请求的URL到处理函数的映射,也就是说提前把请求的URL和处理函数关联好。

路由列表

这么多的路由如何管理呢, 可以使用一个路由列表进行管理,通过路由列表保存每一个路由。

请求路径处理函数
/login.htmllogin函数
/index.htmlindex函数
/center.htmlcenter函数

2. 在路由列表添加路由

framework.py 示例代码:

# 定义路由列表
route_list = [
    ("/index.html", index),
    ("/center.html", center)
]

3. 根据用户请求遍历路由列表处理用户请求

framework.py 示例代码:


# 处理动态资源请求
def handle_request(env):
    # 获取动态请求资源路径
    request_path = env["request_path"]
    print("接收到的动态资源请求:", request_path)
    # 遍历路由列表,选择执行的函数
    for path, func in route_list:
        if request_path == path:
            result = func()
            return result
    else:
        # 没有找到动态资源
        result = not_found()
        return result

    # if request_path == "/index.html":
    #     # 获取首页数据
    #     result = index()
    #     return result
    # elif request_path == "/center.html":
    #     # 获取个人中心数据
    #     result = center()
    #     return result
    # else:
    #     # 没有找到动态资源
    #     result = not_found()
    #     return result

CSDN 社区图书馆,开张营业! 深读计划,写书评领图书福利~

以上是关于mini-Web框架:模板替换与路由列表功能开发 | 黑马程序员的主要内容,如果未能解决你的问题,请参考以下文章

mini-WebPython Web框架程序开发(路由功能开发)

mini-WebPython Web框架程序开发(路由功能开发)

mini-Web框架:装饰器方式的添加路由 | 黑马程序员

mini-web

mini-WebPython Web框架程序开发(模板替换功能)

mini-web框架-元类-总结(5.4.1)