django中视图函数的FBV和CBV

1.什么是FBV和CBV

FBV是指视图函数以普通函数的形式;CBV是指视图函数以类的方式。

2.普通FBV形式

def index(request):
return HttpResponse('index')

3.CBV形式

3.1 CBV形式的路由

path(r'^login/',views.MyLogin.as_view())

3.2 CBV形式的视图函数

from django.views import View
class MyLogin(View):
def get(self,request): #get请求时执行的函数
	return render(request,'form.html')
def post(self,request):  #post请求时执行的函数
	return HttpResponse('post方法')

FBV和CBV各有千秋
CBV特点是:
能够直接根据请求方式的不同直接匹配到对应的方法执行

4.CBV源码分析

核心在于路由层的views.MyLogin.as_view()--->其实调用了as_view()函数就等于调用了CBV里面的view()函数,因为as_view()函数是一个闭包函数,返回的是view---->view函数里面返回了dispatch函数--->dispatch函数会根据请求的方式调用对应的函数!

5.CBV添加装饰器的三种方式

from django.views import View #CBV需要引入的模块
from django.utils.decorators import method_decorator #加装饰器需要引入的模块
"""
CBV中django不建议你直接给类的方法加装饰器
无论该装饰器是否能都正常工作 都不建议直接加
"""

django给CBV提供了三种方法加装饰器

# @method_decorator(login_auth,name='get')  # 方式2(可以添加多个针对不同的方法加不同的装饰器)
# @method_decorator(login_auth,name='post')
class MyLogin(View):
    @method_decorator(login_auth)  # 方式3:它会直接作用于当前类里面的所有的方法
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(request,*args,**kwargs)
    # @method_decorator(login_auth)  # 方式1:指名道姓,直接在方法上加login_auth为装饰器名称
    def get(self,request):
        return HttpResponse("get请求")

    def post(self,request):
        return HttpResponse('post请求')

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:django中视图函数的FBV和CBV - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 小程序发布流程、小程序进度条组件、修改data里的局部数据、小程序api位置设置、首页瀑布流展示

    发布 发布流程的问题 方式一 1. 打开图片进行本地预览 2. 输入文字 & 选择相应的信息 3. 点击发布按钮 3.1 将本地图片上传到 腾讯云对象存储中COS(oss),并将COS中的图片地址返回。 3.2 将COS中的图片URL和文字等信息一起提交到后台。 BUG: 在3.2步骤时可能拿不到COS中的图片。 function onClickSu…

    Python开发 2023年3月31日
    00
  • 登录注册接口搭建

    登录接口分析 登录分为多方式登录和验证码登录方式 多方式登录 1)前台提供账号密码,账号可能是 用户名、手机号、邮箱等 接口: 后台只需要提供一个多方式登录接口即可 – 多方式登录接口 多方式登录接口 前端输入完账号和密码,点击登录,向后端发送请求进行校验用户登录数据 urls.py from django.urls import path,re_path,…

    Python开发 2023年4月2日
    00
  • 注册功能页面的搭建

    思路分析 注册页面需要对用户提交的数据进行校验,并且需要对用户输入错误的地方进行提示! 所有我们需要使用forms组件搭建注册页面! 平时我们书写form是组件的时候是在views.py里面书写的,但是为了接耦合,我们需要将forms组件都单独写在一个地方,需要用的时候导入就行! 例如,在项目文件夹下创建一个myforms文件夹,里面放各种forms组件文件…

    2023年4月2日
    00
  • 支付宝支付

    支付宝支付流程 在python中封装alipay 安装 >: pip install python-alipay-sdk –upgrade # 如果抛ssl相关错误,代表缺失该包 >: pip install pyopenssl 结构 libs ├── AliPay # aliapy二次封装包 │ ├── __init__.py # 包文件 │…

    2023年4月2日
    00
  • django的基本介绍与操作

    django的基本操作 1.django的安装 (1)在ubuntu上的安装 sudo pip3 install django==2.1.12(版本号) 检查安装是否成功: sudo pip3 freeze|grep -i ‘Django’ 有输出django==2.2.12 表示安装成功 (2)在windows上的安装 在终端执行 pip3 install…

    2023年4月2日
    00
  • 重构后台的django项目目录、配置开发环境、添加环境变量

    重构项目目录 celery_task: logs:项目运行时/开发时日志目录包 luffapi:项目同名文件夹 apps:项目所有应用的集合文件夹 libs:第三方类库的保存目录[第三方组件、模块] – 包 media:用户提交的文件目录文件夹 settings:配置目录,包含开发时的配置文件和上线时的配置文件 utils:多个模块[子应用]的公共函数类库[…

    2023年4月2日
    00
  • 基础数据类型之元组

    1.元组的定义 元组,其实就是一个不可变的‘列表’ 用小括号()定义,括号内用逗号分隔开任意类型的数据,当只有一个数据时也需要加逗号 元组中的数据是不可改变指的是:数据的内存地址不可改变,如果元组里是列表(可变类型),可以通过方法往列表里增删值!!! 2.元组的作用 按照索引/位置存放多个数据,这些数据只用于读,不用于改 3.类型转换 tuple()方法转换…

    Python开发 2023年4月2日
    00
  • django中的auth模块与admin后台管理

    1. auth模块 在创建完django项目之后,执行数据库迁移之后,数据库里会增加很多新表,其中有一张名为auth_user的表,当访问django自带的路由admin的时候,需要输入用户名和密码,其参照的就是auth_user表 使用python3 manage.py crataesupperuser 可以创建超级管理员用户,同时在auth_user表里…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部