首页 > 其他分享 >Flask学习笔记(十)-标准类视图及使用场景

Flask学习笔记(十)-标准类视图及使用场景

时间:2022-10-07 12:34:36浏览次数:50  
标签:__ Flask self 笔记 url 视图 app view

一、定义规则

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(视图名字)`中指定的视图名字来作为反转。
5. 类视图有以下好处:可以继承,把一些共性的东西抽取出来放到父视图中,子视图直接拿来用就可以了。但是也不是说所有的视图都要使用类视图,这个要根据情况而定。

二、标准类视图及使用场景

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>这是登录页面</title>
</head>
<body>
    这是登录页面
    <p>{{ ads  }}</p>
    登录用户名显示
    <h1>{{ username }}</h1>
</body>
</html>

regist.html  

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页面</title>
</head>
<body>
    这是注册页面
    <p>{{ ads }}</p>
</body>
</html>

视图函数:

from flask import Flask, render_template, request, views, jsonify
# 实例化app
app = Flask(__name__)

#案例01-将jsonify格式的模板抽离出来
class BaseView(views.View):
    # 自定义方法,用来获取模板路径
    def get_data(self):
        raise NotImplementedError()
    # 必须实现的方法,用来处理请求的
    def dispatch_request(self):
        return jsonify(self.get_data())

#继承父类
class UserView(BaseView):
    # 重写获取数据的方法
    def get_data(self):
        return {
            'username': 'fake',
            'avatar': 'http://www.baidu.com/'
        }

# 类视图通过add_url_rule方法和url做映射
app.add_url_rule('/users/',view_func=UserView.as_view('userview'))


#案例02-将公共模板变量抽离出来
class ADSview(views.View):
    def __init__(self):
        super(ADSview,self).__init__()
        self.context={
            'ads':'今年过节不收礼'
        }

class loginview(ADSview):
    """
    登录视图
    """
    def dispatch_request(self):
        #自定义参数
        self.context.update({'username':'xiaofeng'})
        return render_template('login.html',**self.context)

class registview(ADSview):
    """
    注册视图
    """
    def dispatch_request(self):
        return render_template('regist.html',**self.context)

# 类视图通过add_url_rule方法和url做映射
app.add_url_rule('/login/',view_func=loginview.as_view('loginview'))
app.add_url_rule('/regist/',view_func=registview.as_view('registview'))

if __name__ == '__main__':
    app.run(debug=True)

分别访问:

http://127.0.0.1:5000/login/

 

 http://127.0.0.1:5000/regist/

 

 

 

 

标签:__,Flask,self,笔记,url,视图,app,view
From: https://www.cnblogs.com/xfbk/p/16759484.html

相关文章

  • 20201318李兴昕第三章学习笔记
    第三章:Unix/Linux进程管理知识点总结:本章讨论了Unix/Linux中的进程管理;阐述了多任务处理原则;介绍了进程概念;并以一个编程示例来说明多任务处理、上下文切换和进程处理......
  • 学习笔记-SQL盲注
    盲注在SQL注入过程中,SQL语句执行后,选择的数据不能回显到前端页面,此时需要利用一些方法进行判断或者尝试,这个过程称之为盲注。在盲注中,攻击者根据其返回页面的不......
  • CLIP 读书笔记
    论文:LearningTransferableVisualModelsFromNaturalLanguageSupervisionCLIP:ContrastiveLanguage-ImagePre-training文中27个数据集简介:数据集简要描述数......
  • MYSQY 学习笔记之 练习题
    试题一:取得每个部门最高薪水的人员名单?分析:①先将员工表依据部门编号进行分组并找出每个分组中最高薪水的人员信息②将最高薪水表与原表进行连接#员工信息表mysql>select......
  • 详解线性分类-背景&感知机【白板推导系列笔记】
    本文已参与「新人创作礼」活动,一起开启掘金创作之路。传统的机器学习方法或多或少都有线性回归模型的影子:线性模型往往不能很好地拟合数据,因此有三种方案克服这一劣势:......
  • 《数据科学家访谈录》读书笔记
    ​一、本书内容的介绍《数据科学家访谈录》是一本对当前全球最知名的25位数据科学家的深度采访,然后汇聚成册的访谈录,读者可以从中学习到这25位数据科学领域的大师的个人经历......
  • 两个视图基类,五个视图扩展类
    两个视图基类五个视图扩展类两个视图基类#之前写5个接口,继承APIView#还可以继承GenericAPIView:它帮我们干了好多事#GenericAPIView:属性和方法 -属性......
  • 计网学习笔记
    NoteoftheComputerNetworkingReference:DataCommunicationsandNetworking(ForthEdition)ChapterOne网络准则性能性能通常由网络的两个因素决定:吞吐量和......
  • 【复习笔记】tarjan算法
    写点东西好复习,主要是tarjan这个东西学了容易忘,忘了也不难捡起来,但捡起来了又容易忘。tarjan的前置知识dfs树就暂且咕咕了,因为这东西没什么模板,变化挺多的,估计是写不完。......
  • RenPY学习笔记(1)——项目过程中踩过的坑(们)
    1.如何实现自订对话框  在screens.rpy中,定位到stylewindow项,将backgroundImage修改为要使用的图片stylewindow:xalign0.5xfillTrue......