Django 基于函数的视图与基于类的视图

栏目: Python · 发布时间: 5年前

内容简介:对于基于函数的视图(FBV)和基于类的视图(CFB)常常给新手带来困惑。有多种办法可以做同样的事,该使用哪个?在最初的时候,Django 只能使用基于函数的视图。它们都是采用标准统一的函数形式:接受一个这种方法的好处是它们没有隐藏的行为,我们可以确切知道它在做什么。可以添加想要的装饰器,很大程度上都是所见即所得的。

起步

对于基于函数的视图(FBV)和基于类的视图(CFB)常常给新手带来困惑。有多种办法可以做同样的事,该使用哪个?

基于函数的视图

在最初的时候,Django 只能使用基于函数的视图。它们都是采用标准统一的函数形式:接受一个 request 对象作为参数并返回一个 repsponse 对象。

from django.shortcuts import render

def homepageView(request):
    return render(request, 'index.html')

这种方法的好处是它们没有隐藏的行为,我们可以确切知道它在做什么。可以添加想要的装饰器,很大程度上都是所见即所得的。

缺点就是随着逻辑的复杂,函数会变得很大,因为它除了处理业务逻辑,还要包含视图的逻辑。

基于类的视图

从 Django 1.3 开始添加了基于类的视图支持,通过继承,分发等让视图代码变得更简洁(但本质上还是FBV)。解决了代码冗长难以阅读的问题。

使用基于类的视图,需要了解其基础的继承结构,因为它所有代码都不像 FBV 那样明显,你会发现有些结构代码更难理解。

通用的基于类的视图

Django 从中更进一步的发展出通用的类的视图(GCBV),它处理常见的用例,例如 显示模板 ,以 列表形式 显示内容等。这部分代码在 django.views.generic 中。它们更加简洁且强大,然而它们很难定制,依然要深入内部了解底层的方法和继承结构。Django基于类的通用视图有这些: https://ccbv.co.uk/


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Four

The Four

Scott Galloway / Portfolio / 2017-10-3 / USD 28.00

NEW YORK TIMES BESTSELLER USA TODAY BESTSELLER Amazon, Apple, Facebook, and Google are the four most influential companies on the planet. Just about everyone thinks they know how they got there.......一起来看看 《The Four》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

MD5 加密
MD5 加密

MD5 加密工具