Django基础教程(108)Django基于类的视图:从“如果”到“类”的华丽转身:CBV初体验

你是不是还在为每个视图函数里写一大堆if request.method == 'GET'...if request.method == 'POST'...而感到头大?感觉代码又臭又长,像个裹脚布?别急,CBV就是来拯救你于水火之中的“瑞士军刀”!


想象一下,你是个餐厅服务员。在函数视图(FBV)的世界里,客人每说一句话(一个HTTP请求),你都得先猜他到底是想点菜(GET)还是已经决定好了要下单(POST)。

# 传统的函数视图 (FBV) - 像个忙碌的服务员
def order_view(request):
    if request.method == 'GET':
        # 展示菜单
        menu = Menu.objects.all()
        return render(request, 'menu.html', {'menu': menu})
    elif request.method == 'POST':
        # 处理点单
        dish_name = request.POST.get('dish_name')
        order = Order.objects.create(dish=dish_name)
        return redirect('order_success')

看到了吗?全是if...else!如果再来个PUT、DELETE,这函数就得胖成球了。

而现在,CBV来了!它说:“别那么累,我们把不同的活儿分给不同的人(方法)去干。”

# 基于类的视图 (CBV) - 像个有明确分工的团队
from django.views import View
from django.shortcuts import render, redirect

class OrderView(View):
    def get(self, request):
        # 专门处理GET请求:展示菜单
        menu = Menu.objects.all()
        return render(request, 'menu.html', {'menu': menu})
    
    def post(self, request):
        # 专门处理POST请求:处理点单
        dish_name = request.POST.get('dish_name')
        order = Order.objects.create(dish=dish_name)
        return redirect('order_success')

urls.py中,我们需要使用.as_view()方法把这个类“变成”Django能认识的视图函数:

# urls.py
from .views import OrderView

urlpatterns = [
    path('order/', OrderView.as_vi
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

值引力

持续创作,多谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值