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,在首页应该能看到:
刚才,我们使用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,喜欢的可以点个收藏和关注,我们下次再见!



