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

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

内容简介:对于基于函数的视图(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/


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

查看所有标签

猜你喜欢:

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

Flask Web开发实战

Flask Web开发实战

李辉 / 机械工业出版社 / 2018-8-1 / 129

这是一本面向Python程序员的,全面介绍Python Web框架Flask的书。关于本书的详细介绍、相关资源等更多信息可以访问本书的官方主页http://helloflask.com/book了解。 • 国内首本Flask著作,在内容上涵盖完整的Flask Web开发学习路径,在实践上包含完整的Flask Web程序开发流程。同时兼容Python2 .7和Python3.6。 • 内......一起来看看 《Flask Web开发实战》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具