Django-中的FBV和CBV


原文链接:https://www.cnblogs.com/weiman3389/p/6896624.html

django中请求处理方式有2种:FBV 和 CBV

 

一、FBV

FBV(function base views) 就是在视图里使用函数处理请求。

看代码:

urls.py

1
2
3
4
5
6
7
8
from django.conf.urls import url, include
# from django.contrib import admin
from mytest import views
 
urlpatterns = [
     # url(r‘^admin/‘, admin.site.urls),
     url(r‘^index / ‘, views.index),
]

views.py

1
2
3
4
5
6
7
8
9
from django.shortcuts import render
 
 
def index(req):
     if req.method = = ‘POST‘:
         print (‘method is :‘ + req.method)
     elif req.method = = ‘GET‘:
         print (‘method is :‘ + req.method)
     return render(req, ‘index.html‘)

注意此处定义的是函数【def index(req):】

index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html lang = "en" >
<head>
     <meta charset = "UTF-8" >
     <title>index< / title>
< / head>
<body>
     <form action = " " method=" post">
         < input type = "text" name = "A" / >
         < input type = "submit" name = "b" value = "提交" / >
     < / form>
< / body>
< / html>

上面就是FBV的使用。

二、CBV

CBV(class base views) 就是在视图里使用类处理请求。

将上述代码中的urls.py 修改为如下:

1
2
3
4
5
6
from mytest import views
 
urlpatterns = [
     # url(r‘^index/‘, views.index),
     url(r‘^index / ‘, views.Index.as_view()),
]

注:url(r‘^index/‘, views.Index.as_view()),  是固定用法。

将上述代码中的views.py 修改为如下:

1
2
3
4
5
6
7
8
9
10
11
from django.views import View
 
 
class Index(View):
     def get( self , req):
         print (‘method is :‘ + req.method)
         return render(req, ‘index.html‘)
 
     def post( self , req):
         print (‘method is :‘ + req.method)
         return render(req, ‘index.html‘)

注:类要继承 View ,类中函数名必须小写。

 

两种方式没有优劣,都可以使用。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值