flask-类视图
flask-类视图
- 标准类视图
from flask import Flask, render_template, views, jsonify app = Flask(__name__) class JsonView(views.View):
def get_response(self):
raise NotImplementedError() def dispatch_request(self):
response = self.get_response()
return jsonify(response) class IndexView(JsonView):
def get_response(self):
context = {
'username': 'ivy'
}
return context app.add_url_rule('/', view_func=IndexView.as_view('index')) class FakeView(object):
def __init__(self):
super().__init__()
self.context = {
'username': 'ivy',
} class TestView(JsonView, FakeView):
def get_response(self):
self.context.update({'age': 23})
return self.context app.add_url_rule('/test', view_func=TestView.as_view('test')) if __name__ == '__main__':
app.run()标准类视图必须继承自flask的view.View且自定义实现dispatch_request方法,最后在app中使用add_url_rule实现路由,第一个参数是该视图对应的路由,view_func制定该路由对应的视图,类视图采用类视图的as_view方法作为视图函数对应。
- 利用类视图可以实现抽象视图,让子类视图自定义实现返回规则,对于一些共同的属性可以采用多继承的方式获取。
- 基于调度的类视图
from flask import Flask, render_template, views, jsonify app = Flask(__name__) class LoginView(views.MethodView):
def get(self):
return 'get' def post(self):
return 'post' app.add_url_rule('/login', view_func=LoginView.as_view('login')) if __name__ == '__main__':
app.run()MethodView可以根据请求方法自己调用自定义类视图的方法函数,跟django的View类一样
- 类视图使用装饰器
from flask import Flask, views, request
from functools import wraps app = Flask(__name__) def login_required(func):
@wraps(func)
def wrapper(*args, **kwargs):
# 模拟登陆验证
name = request.args.get('name')
if name:
return func(*args, **kwargs)
return '未登录' return wrapper @app.route('/')
@login_required
def index():
return 'index page' class IndexView(views.View):
decorators = [login_required] def dispatch_request(self):
return 'index page view' app.add_url_rule('/index', view_func=IndexView.as_view('index_view')) if __name__ == '__main__':
app.run()类视图想和函数视图使用一样的装饰器,直接使用类属性decorators, decorators是一个列表,里面接受装饰器的函数体
flask-类视图的更多相关文章
- Flask初学者:视图函数和类视图
当一个url请求进入后台时,一般有两种方式来进行处理:视图函数和类视图.视图函数直接使用一个函数来进行处理并返回数据给浏览器,类视图则是使用类来进行处理并返回的,所以当需要进行的处理比较简单,则可以考 ...
- 9、Flask实战第9天:类视图
之前我们接触的视图都是函数,所以一般简称为视图函数.其实视图函数也可以基于类来实现,类视图的好处是支持继承,写完类视图需要通过app.add_url_rule(url_rule, view_func) ...
- Flask(10)- 标准类视图
前言 前面文章讲解 Flask 路由的时候,都是将 URL 路径和一个视图函数关联 当 Flask 框架接收到请求后,会根据请求 URL,调用响应的视图函数进行处理 Flask 不仅提供了视图函数来处 ...
- Flask之视图(一)
2.关于Flask 知识点 从Hello World开始 给路由传递参数 返回状态码 重定向 正则URL 设置cookie和获取cookie 扩展 上下文 请求钩子 Flask装饰器路由的实现 Fla ...
- 【Flask】视图高级
# 视图高级笔记:### `add_url_rule(rule,endpoint=None,view_func=None)`这个方法用来添加url与视图函数的映射.如果没有填写`endpoint`,那 ...
- Flask05 cookie、类视图、方法视图、自己的404页面
1 什么是cookie 就是网站存放到你浏览器中的一部分固定内容:当你下次访问我这个网站的时候,你会把之前我存放到你浏览器中的数据带回来给我 你要先登录(用户名.密码) -> ...
- flask类装饰器
from flask import Flask,request,views from functools import wraps app = Flask(__name__) #自定义登录装饰器 de ...
- Visual studio 类视图和资源视图不显示的问题
关于Visual studio 类视图和资源视图不显示的问题 解决方法: 1. 工具—选项—文本编辑器—C/C++—高级,浏览/导航下的禁用数据库选项置为False; 2. 输入命令:devenv / ...
- visual studio2010 “类视图”和“对象浏览器”图标
“类视图”和“对象浏览器”显示一些图标,这些图标表示代码实体,例如命名空间.类.函数和变量. 下表以图文并茂的形式说明了这些图标. 图标 说明 图标 说明 namespace 方法或函数 类 运算符 ...
- 在DJANGO的类视图中实现登陆要求和权限保护
以前接触的是基于函数的保护,网上材料比较多. 但基于类视图的很少. 补上! Decorating class-based views 装饰类视图 对于类视图的扩展并不局限于使用mixin.你也可以使用 ...
随机推荐
- win10 安装虚拟机提示 主IP地址显示网络信息不可用
问题:在虚拟机详情下面显示 主ip地址:网络信息不可用 解决办法: 先root用户[root@dfhf~]#cd ..[root@dfhf/]#cd /etc/sysconfig/network-sc ...
- 用 SendGrid 发送免费电子邮件
1. 概述 SendGrid 免费账号可以限额发送 100/天封邮件,虽然比 Mailgun 的每月 10000 封的免费额度少,但胜成注册无需绑定信息卡. 集成 SendGrid 有 SMTP 和 ...
- Windows主机与centOS虚拟机之间"ping不通"
为什么要遇到这个问题 这是我重新安装centOS7.5虚拟机之后遇到的问题——我需要安装一个SecureCRT工具,结果主机与虚拟机没有ping通. 在安装这个工具之前需要进行主机与虚拟机的相互pin ...
- Journal of Proteome Research | Lipidomics reveals similar changes in serum phospholipid signatures of overweight and obese paediatric subjects (分享人:赵倩倩)
文献名:Lipidomics reveals similar changes in serum phospholipid signatures of overweight and obese paed ...
- Spring Boot 整合 Redis 和 JavaMailSender 实现邮箱注册功能
Spring Boot 整合 Redis 和 JavaMailSender 实现邮箱注册功能 开篇 现在的网站基本都有邮件注册功能,毕竟可以通过邮件定期的给用户发送一些 垃圾邮件 精选推荐
- mpy开发物联网系列:1.mpy与服务器数据库方案
ini配置文件与非关系型数据库 在使用micropython开发esp32过程中,经常涉及到一些数据的配置读取,而esp32本身micropython难以安装很多数据库客户端的库,只能基于本地文件使用 ...
- mac下 yarn Stack trace: ExitCodeException exitCode=127
问题出在hadoop 为mac系统配置的读取java_home处. 更改 /Users/shaofengfeng/apache/hadoop/libexec/hadoop-config.sh 如下 # ...
- mysql打开general log的办法
mysql打开general log的办法 mysql打开general log之后,所有的查询语句都可以在general log 文件中以可读的方式得到,但是这样general log文件会非常 ...
- OpenCV-Python 霍夫线变换 | 三十二
目标 在这一章当中, 我们将了解霍夫变换的概念. 我们将看到如何使用它来检测图像中的线条. 我们将看到以下函数:cv.HoughLines(),cv.HoughLinesP() 理论 如果可以用数学形 ...
- WEB缓存控制机制与varnish简介
在说到缓存varnish前,我们首先来了解下对于web服务缓存到底是什么?它有哪些特点,基础原理是什么? http是web应用协议,通常我们说的一次http事务,不外乎就是客户端请求,服务端响应,通常 ...