flask 视图高级知识笔记
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask 视图高级知识笔记相关的知识,希望对你有一定的参考价值。
参考技术A这个方法用来添加url与视图函数的映射。如果没有填写 endpoint 这个参数,那么使用 view_func 的名字作为 endpoint 参数。以后在使用 url_for() 函数时,就应该使用 endpoint 这个字符串。
这个装饰器底层也是使用的 add_url_rule() 这个函数实现的url与视图函数的映射的。
视图也可以通过类来实现,类视图的好处是支持继承,类视图不像函数视图一样,类视图还需要 注册 ,通过 add_url_rule(url_rule,view_func) 来注册
标准视图继承自 flask.views.View ,并且在子类中必须实现 dispatch_request 方法,这个方法类似于 视图函数,也要返回一个基于 Response 或其子类的对象。
注册的时候,使用 view_func 参数 ,使用 类视图.as_views(视图名称) 这类方法。例如:
Flask 还为我们提供了一种类视图 flask.views.MethodView ,
对每个 HTTP 方法执行不同的函数(映射到对应方法的同名小写的方法上),
这对 Restful API 尤其有用,例子如下:
Flask 第四话之视图高级类用法
1、add_url_rule(rule, endpoint=None, view_func=None)
注:这个方法用来添加url与视图函数的映射,如果没有填写`endpoint`,默认使用`view_func`的名字作为`endpoint`。
app.add_url_rule(‘/list/‘,view_func=list,endpoint=‘list‘)
2、@app.route(rule,**options):底层依然是使用add_url_rule这个函数实现路由映射的
@app.route(‘/‘) def index(): return render_template(‘index.html‘)
一、标准类视图函数
实例1、URL返回JSON数据
from flask import views,jsonify class JsonView(views.View): def get_data(self): raise NotImplementedError def dispatch_request(self): return jsonify(self.get_data()) class ListViews(JsonView): def get_data(self): return {‘a‘:‘111‘,‘b‘:‘222‘} # 第一步:匹配url,找到ListViews方法 # 第二步:执行dispatch_request方法,找到父类JsonView =》dispatch_request() # 第三步:return jsonify(self.get_data()) ===》找到自己的get_data()方法 ===》转换json格式并返回数据 app.add_url_rule(‘/list/‘,endpoint=‘list‘,view_func=ListViews.as_view( ‘list‘ ))
实例2、多个URL获取相同数据
from flask import views,render_template class GuangGaoViews(views.View): def __init__(self): super(GuangGaoViews,self).__init__() self.context = { ‘a‘:‘广告数据‘ } class LoginViews(GuangGaoViews): def dispatch_request(self): return render_template(‘login.html‘,**self.context) class RegistViews(GuangGaoViews): def dispatch_request(self): return render_template(‘regist.html‘,**self.context) app.add_url_rule(‘/login/‘,view_func=LoginViews.as_view(‘login‘)) app.add_url_rule(‘/regist/‘,view_func=RegistViews.as_view(‘regist‘))
以上是关于flask 视图高级知识笔记的主要内容,如果未能解决你的问题,请参考以下文章
学习python-20191203Python Flask高级编程开发鱼书_第01章 Flask的基本原理与核心知识
牛B!鹅厂千页《MySQL笔记》资源泄露,涵盖MySQL所有高级知识点!