iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于Flask视图介绍
  • 322
分享到

关于Flask视图介绍

2024-04-02 19:04:59 322人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录2、类视图2.1 标准类视图2.1.1 基于方法的视图1、视图函数 之前的文章说过,在 flask 中路由是请求的 url 与处理函数之间的映射,使用app.route装饰器将处

1、视图函数

之前的文章说过,在 flask 中路由是请求的 url 与处理函数之间的映射,使用app.route装饰器将处理函数和 url 绑定,路由绑定的处理函数就被成为视图函数。


@app.route('/user/<name>')

def hello_user(name):

    return 'Hello {}!'.fORMat(name)

上面的hello_user()函数就是一个简单的视图函数。

当然我们也可以不使用app.route装饰器,使用app.add_url_rule()方法也可将视图函数和 url 进行绑定,实际上装饰器app.route也是调用的app.add_url_rule()方法。


def hello():

    return 'hello Flask!'

app.add_url_rule('/hello', view_func=hello)

通过app.add_url_rule()方法,可以将路由同视图分开,方便将路由进行统一管理。

2、类视图

我们之前包括上面使用的,都是基于函数的视图,这虽然是最简单便捷的用法,但是不容易扩展,其实视图函数也可以基于类来实现,好处就是类支持继承,可以把一些共性的代码放在父类中,其他子类可以继承,在某些情况下,使用类更合理,更易于扩展。

类视图分为标准类视图和基于调度方法的类视图,下面分别介绍一下。

2.1 标准类视图

标准类视图的写法:

  • 父类必须继承 flask.views.View
  • 子类实现dispatch_request()方法,完成自身的业务逻辑并返回结果
  • 子类使用app.add_url_rule()进行注册,其中view_func参数使用as_view()方法做类方法转换
  • 如果注册时指定了endpoint参数,endpoint的值会覆盖指定的视图名称,使用url_for时就必须使用endpoint指定的值

具体使用方式如下:


from flask.views import View

class ParentView(View):

    def __init__(self):

        super().__init__()

        # 公共部分信息

        self.public_data = 'Flask WEB App'

class Index(ParentView):

    methods = ['GET']

    def dispatch_request(self):

        return self.public_data + " index"

class User(ParentView):

    methods = ['POST']

    def dispatch_request(self):

        return self.public_data + " user"

app.add_url_rule('/index', endpoint='index', view_func=Index.as_view('index'))

app.add_url_rule('/user', endpoint='user', view_func=User.as_view('user'))

上述代码中创建了一个 ParentView 类,继承自 flask.views.View 类,然后创建了 Index User 两个类继承自 ParentView 类,并分别重写实现了dispatch_request()函数,使用了父类 ParentView 的属性public_data, 实现自己的业务逻辑。然后我们通过as_view()方法把类转换为实际的视图函数,as_view()必须传入一个唯一不重复的视图名。此后,这个视图由app.add_url_rule()方法和指定路由绑定。

类视图支持的 Http 请求方法由视图类变量methods指定,默认只支持 GET 请求。

2.1.1 基于方法的视图

如果视图支持多种 HTTP 请求方法的话,之前我们都是在视图函数中进行判断,根据不同的请求方法执行不同的业务逻辑,那有没有更简单的方法呢?是有的,Flask 中的方法类视图 flask.views.MethodView 就可以做到,它是 flask.views.View 的子类,通过定义和请求方式同名的小写方法来完成了逻辑处理,不必提供methods属性,每个 HTTP 方法都映射到一个具有相同名称(小写)的函数。

下面看下详细使用方法。


from flask.views import MethodView

class UserView(MethodView):

    def get(self):

        user_id = request.args.get("user_id")

        return "Hello user:{}".format(user_id)



    def post(self):

        name = request.form.get("name")

        passWord = request.form.get("password")

        if name == "admin" and password == "123456":

            return "hello admin!"

        else:

            return "not allow!"

app.add_url_rule('/user/get_info', view_func=UserView.as_view('get'))

app.add_url_rule('/user/login', view_func=UserView.as_view('post'))

代码中定义的get()函数用于处理 GET 请求,post()函数用于处理 POST 请求,代码中省去了 HTTP 请求方法的判断语句,而且是不是更加RESTFul一些了。

请求测试:

到此这篇关于 关于Flask 视图介绍的文章就介绍到这了,更多相关Flask 视图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 关于Flask视图介绍

本文链接: https://www.lsjlt.com/news/158474.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Flask视图介绍
    目录2、类视图2.1 标准类视图2.1.1 基于方法的视图1、视图函数 之前的文章说过,在 Flask 中路由是请求的 url 与处理函数之间的映射,使用app.route装饰器将处...
    99+
    2024-04-02
  • 关于Flask上下文详细介绍
    目录1、上下文概念2、Flask中的上下文2.1请求上下文2.2应用上下文 1、上下文概念 上下文,说白了就是所谓的语境,就是语言环境。比如单独拎出来一篇文章的某一句话,我们可能不能...
    99+
    2024-04-02
  • 关于Rocky Linux的相关介绍
    这篇文章主要介绍了关于Rocky Linux的相关介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。Rocky Linux是一个社区企业操作系统,其下游合作伙伴已改变方向,旨在与美国顶级企业Linux发行版实现100%错...
    99+
    2023-06-08
  • 九、MySQL之视图的介绍
    🙌作者简介:数学与计算机科学学院学生、分享学习经验、生活、 努力成为像代码一样有逻辑的人 🌙个人主页:阿芒的主页 👉推荐一款刷题、找工作神器 牛客网注册即可免费刷题 文章目录 &...
    99+
    2023-08-19
    数据库 mysql sql
  • Flask  request 对象介绍
    目录1、request请求对象1.1request请求对象的使用前言: 一个完整的 HTTP 请求,包括客户端向服务端发送的 Request 请求和服务器端发送的 Response ...
    99+
    2024-04-02
  • 关于H3CNA认证的介绍
    关于H3CNA认证的介绍 总有很多人在我QQ上问关于H3CNA认证的事,其实这个证只是针对H3C网络学院的一个助理工程师认证,可以直接考H3CNE的,H3CNA认证一般情况下不用考。H3CNA认证主要定位于中小企业网络基本配置操作和设备维护...
    99+
    2023-01-31
    H3CNA
  • Flask路由&视图
    1 路由  1.1app.url_map 查看所有路由 from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): ...
    99+
    2023-01-31
    视图 路由 Flask
  • 关于Python中的元组介绍
    一、元组 Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。 访问元组: 修改元组:  元组的内置函数count, index:   ...
    99+
    2024-04-02
  • 关于Apache负载均衡介绍
    Apache负载均衡(Apache Load Balancer)是一种在多台服务器之间分配工作负载的技术。它通过将客户端请求分发到多...
    99+
    2023-09-23
    Apache
  • Angularjs中的视图和指令介绍
    这篇文章主要介绍“Angularjs中的视图和指令介绍”,在日常操作中,相信很多人在Angularjs中的视图和指令介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Angu...
    99+
    2024-04-02
  • 关于redis命令的详细介绍
    小编给大家分享一下关于redis命令的详细介绍,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!              &...
    99+
    2024-04-02
  • 关于Python中的__init__()方法介绍
    本文主要介绍了Python中的__init__()方法,__init__()方法是Python学习当中重要的基础知识,需要的朋友可以参考下 __init__()方法意义重大的原因有两个。第一个原因是在对象生命周期中初始化是最重要的一步;...
    99+
    2023-09-25
    python microsoft 开发语言
  • Python将视频转换为图片介绍
    目录前言代码展示结果展示总结前言 代码让人头秃,可是我喜欢上了代码的逻辑感和代码解决问题的力量。(我要对这个专题的图片进行修改,缩小看和我导头像有点像QAQ) 代码展示 此段代码能够...
    99+
    2024-04-02
  • Android视图绑定viewBinding的使用介绍
    目录在 Activity 中使用 viewBinding在Fragment中使用viewBinding与findViewById的区别与dataBinding的对比替代 KAEGoo...
    99+
    2023-01-28
    Android视图绑定viewBinding Android视图绑定 Android viewBinding
  • 关于Windows CE Emulator的使用介绍
    Windows CE Emulator是一个用于模拟运行Windows CE操作系统的工具。它可以帮助开发人员在PC上模拟运行Win...
    99+
    2023-09-22
    Windows
  • Flask数据库集成的介绍
    目录1、使用Flask-SQLAlchemy管理数据库1.1 配置Flask_SQLAlchemy1.2 定义数据库模型1.3 创建数据库和表1.4 数据库操作1.4.1 Creat...
    99+
    2024-04-02
  • Java关于数组的介绍与使用
    目录一、前言二、数组的定义数组定义的形式:格式1:格式2:三、数组的初始化方式:1.动态初始化动态开辟的示意图:2.静态初始化四、索引访问数组五、数组长度表示六、遍历数组方法一:实例...
    99+
    2024-04-02
  • 关于reduce的介绍及用法说明
    目录参数介绍举例说明1.把数组合并为一个对象2.去重3.求和4.求最大值和最小值5.扁平数组6.求字符串中各个字符出现的次数 reduce总的来说用的不多,但最近看一些文章...
    99+
    2024-04-02
  • vue视图响应式更新详细介绍
    目录概述思路第一步统一封装更新函数第二步监听并触发视图更新引入Dep管家实现下语法糖v-model概述 前面两篇文章已经实现了对数据的变化的监听以及模板语法编译初始化,但是当数据变化...
    99+
    2024-04-02
  • 关于python的对象序列化介绍
    对象:是抽象的概念 如列表 元组 字典 集合 皆为对象 序列化:一种方法。目的:把对象存储在磁盘上(即,将对象转换为字节数据/字符数据)。 这一过程我们借助序列化这一方法实现。 为什...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作