Django:视图系统中的 CBV 和FBV

视图系统 CBV 和FBV
1.FBV : 基于函数的视图。
2.CBV: 基于类的视图。
(1)创建视图类步骤:
① 创建一个类继承 from django.views import View。
②覆写(重写) get() 、post() 方法。
1)当浏览器是get请求的时候,默认调用get() 方法。
2)当浏览器是post请求的时候、默认调用的是post()方法。
3)注意: get()、post() 方法 必须要声明出形参(request)。
③路由中使用方式: views.类名.as_views()
注意: CBV 和FBV 同级的,并且根据个人习惯使用不同方式。

例子:
视图:
FBV function base view 基于函数的视图

from django.shortcuts import render, HttpResponse

def login(request):
    error_msg = ''
    if request.method == 'POST':
        name = request.POST.get('username')  # 获取表单提交过来的值
        password = request.POST.get('passwd')
        print(name, password)
        # print(request.POST)  字典
        if name == 'zs' and password == '123':
            # 输入正确,登录成功,进入success
            # return HttpResponse('success!!!')
            return redirect('/app01/lishan01/')
        else:
            # 输入不正确,登录不成功,返回登录界面
            error_msg = '用户名或者密码错误,请重新输入'
    return render(request, 'app01/login.html', {'error_msg': error_msg})

#CBV class base view 基于类的视图

from django.views import View

class Login2(View):
    def get(self,request):
        return render(request,'app01/login.html')
    def post(self,request):
        name = request.POST.get('username')
        pwd=request.POST.get('pwd')
        print(name,pwd)
        return HttpResponse('success...')

路由:

from django.urls import path
from app01 import views

urlpatterns = [
    path('login/', views.login),
    path('lishan01/', views.lishan01),
    path('login2/', views.Login2.as_view()),   
 
]

使用 继承父类View 里面的函数as_view,可以自动判别 get 和 post 方法,并返回到Login2类中相关函数流程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值