我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于Flask视图介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于Flask视图介绍

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 视图内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于Flask视图介绍

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

下载Word文档

猜你喜欢

九、MySQL之视图的介绍

🙌作者简介:数学与计算机科学学院学生、分享学习经验、生活、 努力成为像代码一样有逻辑的人 🌙个人主页:阿芒的主页 👉推荐一款刷题、找工作神器 牛客网注册即可免费刷题 文章目录 &
2023-08-19

关于Rocky Linux的相关介绍

这篇文章主要介绍了关于Rocky Linux的相关介绍,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。Rocky Linux是一个社区企业操作系统,其下游合作伙伴已改变方向,旨在与美国顶级企业Linux发行版实现100%错
2023-06-08

关于H3CNA认证的介绍

关于H3CNA认证的介绍总有很多人在我QQ上问关于H3CNA认证的事,其实这个证只是针对H3C网络学院的一个助理工程师认证,可以直接考H3CNE的,H3CNA认证一般情况下不用考。H3CNA认证主要定位于中小企业网络基本配置操作和设备维护,
2023-01-31

关于Apache负载均衡介绍

Apache负载均衡器(mod_proxy_balancer)是一个开源Web服务器模块,用于对HTTP、HTTPS和WebSocket流量进行负载均衡。它提高了应用程序可用性、可扩展性和性能,通过在前端服务器和后端服务器之间建立反向代理关系来工作。支持多种负载均衡算法,并提供高可用性、监控、健康检查和粘性会话等功能。Apache负载均衡器适用于电子商务网站、内容管理系统和其他需要高可用性和高性能的应用程序。
关于Apache负载均衡介绍
2024-04-08

关于Apache负载均衡介绍

Apache负载均衡(Apache Load Balancer)是一种在多台服务器之间分配工作负载的技术。它通过将客户端请求分发到多台服务器上,以确保每台服务器都能得到合理的负载,提高系统的可用性和性能。Apache负载均衡器通常独立的服务
2023-09-23

关于Node.js的events.EventEmitter用法介绍

Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列。 Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出
2022-06-04

关于java泛型的详细介绍

Java泛型泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 比如我们要写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,我们就可以使用 Ja
关于java泛型的详细介绍
2021-04-27

关于Windows CE Emulator的使用介绍

Windows CE Emulator是一个用于模拟运行Windows CE操作系统的工具。它可以帮助开发人员在PC上模拟运行Windows CE环境,以便开发、测试和调试Windows CE应用程序。以下是关于Windows CE Emu
2023-09-22

Android视图绑定viewBinding的使用介绍

最近这段时间在学习Kotlin,突然发现谷歌已经把kotlin-android-extensions插件废弃,目前推荐使用ViewBinding来进行替代,接下来通过本文给大家分享Android使用ViewBinding的详细步骤,感兴趣的朋友一起学习吧
2023-01-28

Python 绘图和可视化详细介绍

Python之绘图和可视化 1. 启用matplotlib 最常用的Pylab模式的IPython(IPython --pylab) 2. matplotlib的图像都位于Figure对象中。 可以使用plt.figure创建一个新的Fig
2022-06-04

java中关于scanner类的详细介绍

1.Scanner的实现步骤第一步:在有效代码的第一行,通过import导入Scanner类!import java.util.Scanner;第二步:通过new关键字实例化一个Scanner对象!Scanner input = new Scanner(Sys
java中关于scanner类的详细介绍
2019-01-24

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录