Python Flask中的PluggableViews和Blueprint有什么区别?
最佳答案
我不知道比较它们是否正确,但是,
根据Flask Documentation:
Flask 0.7引入了可插拔的视图,这些视图的灵感来自Django的基于类而不是函数的通用视图。主要目的是可以替换部分实现,并且这种方式具有可自定义的可插入视图。
在该示例中,它在视图中定义了get_template_name方法,并在其他视图中重用了该方法。这就是可插入视图的用途。
from flask.views import View
class ListView(View):
def get_template_name(self):
raise NotImplementedError()
def render_template(self, context):
return render_template(self.get_template_name(), **context)
def dispatch_request(self):
context = {'objects': self.get_objects()}
return self.render_template(context)
class UserView(ListView):
def get_template_name(self):
return 'users.html'
def get_objects(self):
return User.query.all()
Flask蓝图只是组织大型项目的一种简便方法。他们没有给您提供可插入视图功能。
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound
simple_page = Blueprint('simple_page', __name__,
template_folder='templates')
@simple_page.route('/', defaults={'page': 'index'})
@simple_page.route('/<page>')
def show(page):
try:
return render_template('pages/%s.html' % page)
except TemplateNotFound:
abort(404)
然后,将这些蓝图注册到您的应用程序对象。
关于python - Python Flask中的可插入 View 和蓝图之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40943923/