flask 中类视图的使用(一)

2023-11-07

类视图

     之前我们接触的视图都是函数,所以一般简称视图函数。其实视图也可以基于类来实现,类视图的好处是支持继承,但是类视图不能跟函数视图一样,写完类视图还需要通过app.add_url_rule(url_rule,view_func)来进行注册。以下先对标准类视图进行讲解

1.标准类视图使用步骤

1. 标准类视图,必须继承自`flask.views.View`.

2. 必须实现`dipatch_request`方法,以后请求过来后,都会执行这个方法。这个方法的返回值就相当于是之前的函数视图一样。也必须返回`Response`或者子类的对象,或者是字符串,或者是元组。

3. 必须通过`app.add_url_rule(rule,endpoint,view_func)`来做url与视图的映射。`view_func`这个参数,需要使用类视图下的`as_view`类方法类转换:`ListView.as_view('list')`。

4. 如果指定了`endpoint`,那么在使用`url_for`反转的时候就必须使用`endpoint`指定的那个值。如果没有指定`endpoint`,那么就可以使用`as_view(视图名字)`中指定的视图名字来作为反转。

from flask import Flask,views,url_for

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

#定义一个类视图
class  ListView(views.View):
    def dispatch_request(self):
        return "这是List列表"

#注册类视图
app.add_url_rule('/list/',endpoint='mlist',view_func=ListView.as_view('my_list'))


with  app.test_request_context():
    #若注册url时,没有指定endpoint,使用as_view()方法中的名称  来构建url
    # print(url_for('my_list'))
    # 若注册url时,有指定endpoint,就不能再使用as_view()方法中的名称 来构建url,而要使用endpoint的值来构建url
    print(url_for('mlist'))

2.类视图的好处

     1.可以继承,把一些共性的东西抽取出来放到父视图中,子视图直接拿来用就可以了。

     2.但是也不是说所有的视图都要使用类视图,这个要根据情况而定。视图函数用得最多

#类视图的好处:
#需求:以后有 好几个url,都需要返回json对象的格式
class  ListView2(views.View):
    def  getData(self):
        raise  NotImplementedError

    def  dispatch_request(self):
        return  jsonify(self.getData())

class  JSONView(ListView2):
    def getData(self):
        return {'uname':'momo','age':'22'}


class  JSONView2(ListView2):
    def getData(self):
        return {'bname':'水浒传','price':'89'}

app.add_url_rule('/json/',view_func=JSONView.as_view('my_json'))
app.add_url_rule('/json2/',view_func=JSONView2.as_view('my_json2')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flask 中类视图的使用(一) 的相关文章

随机推荐

  • MySQL架构组成之物理文件组成

    一 日志文件 1 错误日志 Error Log 内容 MyQL Server 运行过程中所有较为严重的警告和错误信息 以及MySQL Server 每次启动和关闭的详细信息 路径 默认存放位置在数据目录下 名称 默认文件名以hostname
  • matlab中用雅可比(Jacobi)迭代法解线性方程组

    所要求解的矩阵 矩阵形式求解
  • Java嵌入式数据库H2学习总结(二)——在Web应用程序中使用H2数据库

    只为成功找方法 不为失败找借口 Java嵌入式数据库H2学习总结 二 在Web应用程序中使用H2数据库 一 搭建测试环境和项目 1 1 搭建JavaWeb测试项目 创建一个 H2DBTest JavaWeb项目 找到H2数据库的jar文件
  • 新榜微信版块nonce,xyz参数破解

    该文章主要提供交流学习使用 请勿利用其进行不当行为 如本篇文章侵犯了贵公司的隐私 请联系我立刻删除 个人博客 http www feastawlisao com 欢迎关注个人公众号 pythonORjs 今天分析一波新榜数据平台 以微信公众
  • 【IMX6UL开发板试用体验】OpenWRT有线网络的配置

    在前面编译完成后 就可以烧写测试启动了 但是启动后发现了一些问题 本次我们说明一下如何使用OpenWrt中的wired LAN 网卡驱动问题 本身板子有两个网口 其中一个没有变压器转换器 另外一个在Uboot中使用是没有问题的 可以正常的t
  • 力扣 455. 分发饼干

    class Solution public int findContentChildren int g int s Arrays sort g 对 g 数组排序 Arrays sort s int count 0 统计孩子满足的个数 int
  • Selenium自动化测试工具的简单介绍和使用

    Selenium Selenium what 进行web网站的自动化测试 提供了操控网页的功能 包括向网页中put和从网页中get how 提供了库 针对不同语言提供了不同语言的库 一 自动化原理 三部分组成 自动化程序 浏览器驱动器 浏览
  • 口语理解任务源码详解系列(三)利用BiRNN-attention模型实现

    利用RNN attention模型实现 写在前面 在前文介绍了项目的数据集构建 传送门 以及利用seq2seq attention模型实现意图分类与槽位填充任务 传送门 本文利用BiRNN attention实现 实现细节请参考论文 Att
  • 51单片机按键控制数码管0~9_51单片机的第四课

    51单片机第三课 按键 本文使用的是STC89C52RC学习的主要内容是按键和数码管进阶 目录 目录 今日一言 按键 轻触开关 按键和轻触开关 准双向口 按键输入原理 实现按键控制点亮LED 按键输入电平状态的变化 数码管计数进阶 今日一言
  • maven创建springboot微服务项目,到打包完整案例

    1 在IDEA中点击File New Project如图 2 点击Next下一步然后创建项目 项目名根据自己需求 3 创建好的项目是这样的如图 4 在pom xml引入maven坐标
  • DataFrame中的count()函数,以及常用的统计方法

    目录 count 函数 pandas DataFrame count DataFrame中常见的其他方法 分组统计 count 函数 官方API为 pandas DataFrame count DataFrame count axis 0
  • 几种常用接口调用方式介绍

    API 全称叫做Application Programming interface 也就是应用程序接口 API是一些预先定义的函数 我是学Java的 当我要使用这些函数的时候 便可以直接调用Java API 不用去访问源码 也不用去理解其中
  • 【Linux基础】CentOS 7环境下安装高版本GCC (gcc/g++ 9.3)

    CentOS 7升级GCC 正文开始 Assassin 目录 CentOS 7升级GCC 基本执行步骤 1 切换用户 2 安装centos release scl 3 安装devtoolset 4 激活对应的devtoolset 5 查看g
  • MySQL如何查询表中重复的数据

    文章目录 一 查询重复记录 二 总结 一 查询重复记录 例 查询员工表里出现重复姓名的记录 思路 1 查看重复记录 首先要使用分组函数 group by 再用聚合函数中的计数函数count name 给姓名列计数 且使用group by 后
  • 计算机重启如何进入设置界面,win7电脑无法正常启动,一开机就进入到bios设置界面怎么办?...

    虽然说bios设置界面中win7电脑中不可分割的一部分 但是一般情况下 bios设置界面的启动和正常进入到系统的路径是不一样的 熟悉这个操作的朋友都知道 要进入到win7系统的bios设置界面中 咱们需要在系统启动的时候按下键盘上的F2或者
  • Mac下Android Studio环境搭建

    本篇还原了本人在Macbook pro上安装Android Studio2 0的过程 安装环境是OS X EI Capitan 10 11 4 下载Java SDK包 Android Studio安装包 android SDK包 这些资源在
  • python 30天_【IT专家】我如何使用Python(最新的)精确计算过去30天?

    本文由我司收集整编 推荐下载 如有疑问 请与我司联系 我如何使用 Python 最新的 精确计算过去 30 天 我如何使用 Python 最新的 精确计算过去 30 天 英 How would I compute exactly 30 da
  • c# 调用c++ lib静态库

    四个步骤 1 创建C Win32项目动态库dll 2 在Win32项目动态库中添加 外部依赖项 lib头文件和lib库 3 导出C接口 4 c 调用c 动态库 开始你的表演 创建一个空白的解决方案 在解决方案中添加 Visual C Win
  • WORD文档复制在CSDN无法正常上传图片

    很多编辑者喜欢在word上写完东西后 再复制到CSDN上发布 word文档复制在CSDN上往往文字没有影响 但是图片无法正常上传 分析 原因大概是word中的图片本身就不是原图片 而是复制其他来源的图片 此时CSDN上传图片时找不到原链接
  • flask 中类视图的使用(一)

    类视图 之前我们接触的视图都是函数 所以一般简称视图函数 其实视图也可以基于类来实现 类视图的好处是支持继承 但是类视图不能跟函数视图一样 写完类视图还需要通过app add url rule url rule view func 来进行注