【Flask】CBV模式

Flask中的CBV模式


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

‘‘‘

flask中的CBV模式:

(1)导入views模块: from flask import views

(2)定义类,继承views.MethodView类: class 类名(views.MethodView)

(3)在类中定义函数名为允许的请求方式的小写形式,进行函数定义,如def get(self):...

(4)添加路由规则:

     CBV:app.add_url_rule(rule,endpoint=‘‘,view_func=类名.as_view(name=‘‘))

     FBV:app.add_url_rule(rule,endpoint=‘‘,view_func=函数名))(直接替代@app.route()方式)

     参数:

        rule 请求路径

        endpoint设置mapping路由映射函数rule:{endpoint:func}

        view_func路由映射的视图函数或者类(as_view()中的name参数设置当前路由映射函数名,唯一指定,不设置endpoint自动为name值)

(5)methods=[]类中设置属性,添加允许的请求方式,不写默认都支持

(6)decorators = []对类中的函数都加上装饰器,列表中可以放多个装饰器函数名,以此执行

‘‘‘

from flask import Flask,views,render_template,request
app = Flask(__name__)

class Login(views.MethodView):
    # methods = ["GET","POST"]  # 指定请求方法,这里可以省略不写,根据请求方法自动找到对应的方法去执行
    decorators = [] #对类中的函数都加上装饰器,列表中可以放多个装饰器函数名,依次执行
    def get(self):
        return render_template("login.html")

    def post(self):
        username = request.form.get("username")
        password = request.form.get("password")
        # 判断用户名和密码是否正确
        if username == "henry" and password == "123456":
            return "200 ok"
        else:
            return "用户名或密码错误"
app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"))  # name其实就是用来填充endpoint的,如果endpoint有值那么name就没有用,且name这个参数是必填的,相当于别名
app.run("0.0.0.0",9527)

原文地址:https://www.cnblogs.com/youxiu123/p/11624305.html

时间: 2024-11-06 23:31:13

【Flask】CBV模式的相关文章

Flask debug 模式 PIN 码生成机制安全性研究笔记

Flask debug 模式 PIN 码生成机制安全性研究笔记 0x00 前言 前几天我整理了一个笔记:Flask开启debug模式等于给黑客留了后门,就Flask在生产网络中开启debug模式可能产生的安全问题做了一个简要的分析.其中有一个比较严重的安全问题是,可以在交互式Python shell中执行自定义Python代码.就这一点来讲,在旧版本的Flask中是不需要输入PIN码认证就可以执行代码,其危害不言而喻. 在新版本的Flask中需要输入PIN码进行认证,才能执行自定义代码,于攻击者

Django 【第二十一篇】中介模型以及优化查询以及CBV模式

一.中介模型:多对多添加的时候用到中介模型 自己创建的第三张表就属于是中介模型 class Article(models.Model): ''' 文章表 ''' title = models.CharField(max_length=64,verbose_name="文章标题") summary = models.CharField(max_length=244, verbose_name="文章概要") create_time = models.DateTimeF

Django中请求的生命周期 和 FBV模式和CBV模式

Django的生命周期就是你的 一个请求所发生的整个流程 Django的生命周期内到底发生了什么呢?? 1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中. 2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配, 一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了. 3. 视图函数根据客

【Django】FBV模式和CBV模式

FBV(Function Base Views):一个url对应一个视图函数 CBV(Class Base views):一个url对应一个类 urls: urlpatterns = [ url(r'^fbv/',views.fbv), url(r'^cbv/',views.CBV.as_view()), ] views: from django.views import View class CBV(View): def get(self,request): ... def post(self

Django之请求生命周期及FBV/CBV模式

一.Http请求的过程1.http的请求/响应模式,先是用户通过前端页面发送一个http请求,请求内容包括三部分:请求头/空行/请求体(get方法没有请求体)例如:抓包如下:2.服务端就收到http的请求内容的字符串后,进行解析出相应的请求头(method /url/cookie等信息 )和请求体内容,并将请求体的内容转换成对应的key-value格式.3.服务端再通过url去匹配对应的URL路由(匹配规则是从上向下进行正则匹配,若匹配成功则停止不再向下匹配),匹配成功后找到views中对应的函

Django视图函数之FBV与CBV模式

FBV模式: FBV(function base views) 就是在视图里使用函数处理请求. 一般直接用函数写的都属于是FBV模式. veiws.py 1 from django.shortcuts import render,HttpResponse 2 # Create your views here. 3 4 def login(request): 5 if request.method=="GET": 6 return render(request,"login.h

网站后端_Python+Flask.0005.FLASK调试模式之开启DEBUG与PIN使用?

自动加载: # 方式一 if __name__ == '__main__':     app.run(host='0.0.0.0', port=9000, debug=True) # 方式二 if __name__ == '__main__':     app.debug = True     app.run(host='0.0.0.0', port=9000) 说明: 可通过如上两种方式开启调试模式,调试模式下PY文件被修改会自动重新加载,资源文件/模版文件/配置文件修改必须重启生效~这个确实

Django之FBV和CBV模式

FBV就是 url路由>>>业务处理函数的方式,CBV就是url路由>>>类 的处理业务方式. 最常用的就是FBV模式,就不用过多赘述,直接上CBV的实用代码. 1.CBV的url路由该怎么写? 1 from django.contrib import admin 2 from django.urls import path 3 from django.conf.urls import url 4 from app01 import views 5 6 urlpatte

django form表单组建使用及CBV模式

一.FBV和CBV FBV:是视图函数以函数的方式写逻辑代码 CBV:是视图以类的方式写逻辑代码 如CBV: views.py from django.shortcuts import render,HttpResponse,redirect from django.views import View from django.views.decorators.csrf import csrf_exempt,csrf_protect from django.utils.decorators imp