栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python Flask Web开发:博客网站开发 (2) 路由,蓝本和模板

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python Flask Web开发:博客网站开发 (2) 路由,蓝本和模板

hello,大家好,我是wangzirui32,今天我们来对Myblog网站继续进行开发,开始学习吧!

1. 路由定义函数

之前,我们在Flask程序中使用路由,是用app.route装饰器来注册路由,比如下面的例子:

@app.route("/")
def index():
	return "首页"

而在这里,却截然不同。我们使用app.add_url_rule来定义一个路由,例子如下:

def index():
    return "首页"
app.add_url_rule("/", "index", index)

index()是路由的处理函数,"index"是路由的名称,"/"是路由的地址。两段代码实现的效果是一样的。

2. 蓝本

何为蓝本?**蓝本(blueprint)**是Flask内置的一个类,它将视图方法模块化,因为将如果大量的视图函数放在一个文件中,很明显是不合适,最好的方案是根据功能将路由合理的划分到不同的文件中,而它就是为了解决这个问题而出现的。
打开Myblog/apps/main/__init__.py,输入以下代码创建一个蓝本:

from flask import Blueprint

main = Blueprint("main", __name__)

这里的"main"是蓝本的名称。
然后,在应用工厂(Myblog/apps/app.py)中添加注册蓝图的代码:

from flask import Flask
from apps.main import main # 导入main蓝本

def create_app():
    app = Flask(__name__)
    # 注册蓝本
    app.register_blueprint(main)
    
    return app

这样,蓝本就集成到应用里了!

3. 为蓝本注册路由

蓝本对象实际和原来的app对象没有什么区别,也可以使用route装饰器,如:

@main.route("/")
def index():
    return "首页"

但我们如果每个路由都这样做显得过于复杂,让我们打开Myblog/apps/main/views.py,键入路由函数的代码:

def index():
    return "Myblog 首页"

再打开Myblog/apps/main/__init__.py,添加代码:

from flask import Blueprint
from .views import *

main = Blueprint("main", __name__)

main.add_url_rule("/", "index", index)

如果代码没有问题,那么运行Myblog/runserver.py,在首页应该能看到:

4. 路由函数返回HTML模板

刚才,我们使用return返回一个字符串作为首页的响应,如果是更大,更复杂的网页的话,那么代码的工作量会增加,且也不好为网页添加新内容。所以,我们应该使用模板作为响应,首先,在Myblog/apps/templates创建一个main文件夹,在main文件夹下创建index.html,写入HTML代码:




    
    
    
    Myblog 首页


    

Myblog 首页

这是Myblog 首页。

然后打开Myblog/apps/main/views.py,修改代码:

from flask import render_template

def index():
    return render_template("main/index.html")

重新运行Myblog/runserver.py,访问首页:

关于模板的渲染机制,以后有时间会慢慢讲。
如果你已经学习到了这儿,恭喜你,你已经掌握了在大型应用中使用模板和蓝图的本领!


好了,今天的课程就到这里,我是wangzirui32,喜欢的可以点个收藏和关注,我们下次再见!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/656086.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号