深入学习Django源码基础15 - views简要分析学习

最新版Django全套教程(附源码)半个月搞定Django没在怕的 Python下有许多款不同的Web框架,Django是重量级选手中最有代表性的一位。它由Python写成,采用MVC的软件设计模式,许多成功的网站和APP都基于Django。 无论你是Python开发人员还是Web前端工程师,都要掌握Django框架。接下来小编分享的教程将一步步带你熟悉Django框架,每天进步一点点,半个月就能搞定Django。 教程名称 2019最新Django全套教程 适宜... 阅读详情

在django中,view有2种编码形式。

1种是function返回

1种是class返回


分析

views文件夹

views
|----decorators
     |----__init__.py
     |----cache.py
     |----clickjacking.py
     |----csrf.py
     |----debug.py
     |----gzip.py
     |----http.py
     |----vary.py
|----generic
     |----__init__.py
     |----base.py
     |----dates.py
     |----detail.py
     |----edit.py
     |----list.py
|----__init__.py
|----csrf.py
|----defaults.py
|----i18n.py
|----static.py

对于views目录和decorators目录下的文件,主要是为了封装了一些函数和装饰器,为了方便函数返回response的代码

对于generic目录下的代码。感觉写起来很帅气。利用多重集成实现mvc分离。把数据源获取,模版渲染。拆分开

下面是精简演示代码。具体就不分析了

from functools import update_wrapper

class ContextMixin(object):
    def get_context_data(self, **kwargs):
        print 'get contenxt'
        if 'view' not in kwargs:
            kwargs['view'] = self
        return kwargs

class View(object):
    http_method_names = ['get','post','put','delete']
    def __init__(self, **kwargs):
        for (k, v) in kwargs.items():
            setattr(self, k, v)

    @classmethod
    def as_view(cls, **initkwargs):
        for key in initkwargs:
            if key in cls.http_method_names:
                raise "can't set httpmethod key"

        def view(request, *args, **kwargs):
            self = cls(**initkwargs)
            self.request = request
            self.args = args
            self.kwargs = kwargs
            return self.dispatch(request, *args, **kwargs)

        update_wrapper(view, cls, updated=())
        update_wrapper(view, cls.dispatch, updated=())

        return view

    def dispatch(self, request, *args, **kwargs):
        if request.method.lower() in self.http_method_names:
            handler = getattr(self, request.method.lower())
        else:
            raise "Can't dispatch request"
        return handler(request, *args, **kwargs)

class TemplateResponseMixin(object):
    template_name = None

    def render_to_response(self, context, **response_kwargs):
        print 'render context:[%s] to html["%s"]' % (context, self.template_name)


class TemplateView(TemplateResponseMixin, ContextMixin, View):
    def get(self, request, *args, **kwargs):
        context = self.get_context_data(**kwargs)
        return self.render_to_response(context)


class AboutView(TemplateView):
    template_name = 'about.html'

class Request(object):
    def __init__(self, method = 'get'):
        self.method = method

AboutView.as_view(template_name='1.html')(Request())

输出内容为:

get contenxt
render context:[{'view': <__main__.AboutView object at 0x103bd8e10>}] to html["1.html"]

Django+MongoDB+Spark电商分析流水线实战 在电商数据分析场景中,传统Django ORM与MongoDB组合难以支撑多维聚合、实时报表等分析型需求;PySpark作为分布式计算引擎,凭借惰性求值、DataFrame链式操作和弹性扩展能力,天然适配海量交易数据的清洗、关联与聚合。本文聚焦‘Django-MongoDB-Spark’技术栈协同架构,解析如何将原始订单文档经Spark批处理后固化为物化视图,再由Django高效查询展示,实现从原始数据到业务报表的生产就绪闭环。核心涵盖版本兼容性(PySpark 3.5.0 + MongoDB Connec 阅读详情

相关推荐

基于Django3.2的用户管理系统完整源码

Django是一个高层次的Python Web框架,它鼓励快速开发和干净、实用的设计。Django 3.2版本引入了对异步视图的支持,这使得Web应用能够更加高效地处理并发请求。首先,确保Python环境已正确安装。接着,使用pip安装Django:安装完成后,可以通过创建一个新的项目来检验Django是否安装成功:mysite是新项目的名称,你可以根据需要进行更改。通过这个步骤,你将得到一个基本的Django项目结构,其中包含了项目的主要设置和默认的SQLite数据库配置。

weixin_33239721的博客 764

python多继承(实例方法,类方法)

class a: @classmethod def as_view(cls,**initkwargs): print('a') class b(object): @classmethod def as_view(cls,**initkwargs): view=super(b,cls).as_view(**initkwargs) ...

leifei2012的博客 836

告别jom Error 2:深入理解QtCreator、CMake与MSVC工具链的协作机制

本文深入解析QtCreator构建过程中常见的jom Error 2问题,揭示CMake与MSVC工具链的协作机制。从CMake生成器的工作原理到MSVC工具链的组件协作,帮助开发者系统化诊断构建错误,提升开发效率。

weixin_30654419的博客 429

Python-解释def __init__(self, *args, **kwargs)

Python-解释def __init__(self, *args, **kwargs) 表示接受任意个数的参数 如果是没有指定key的参数,会以list的形式存放到args中 如果是有指定key的参数,会以dict的形式存放到kwargs中

woysihsb的博客 4576

江科大51单片机笔记【1】单片机及开发板介绍

单片机,Micro Controller Unit,简称MCU,内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能单片机的任务是信息采集(传感器)、处理(CPU)和硬件设备(电机、LED)的控制单片机算是一个袖珍版计算机,是一个完整的计算机系统,成本低体积小结构简单单片机的使用领域:智能仪表、实时工控、通讯设备、导航系统、家用电器等。

2301_80195807的博客 831

AI训练加速30%!用numactl玩转多显卡绑核的隐藏技巧

本文深入探讨了如何利用Linux系统的numactl工具,通过精确的NUMA绑核策略优化多GPU AI训练性能。文章详细解析了NUMA架构对性能的影响,提供了从拓扑探查、命令实战到多卡脚本化部署的完整指南,并分享了性能验证与常见陷阱,帮助开发者实现高达30%的训练加速。

web99的专栏 448

View 里面的as_view都做了什么

后首先对传入的参数做简单的校验,避免传入的参数将类自己的关键函数名覆盖掉,或者传入类中没定义的属性。返回了一个函数(携带着必要的参数),和你用视图函数时直接传递给路由一个函数的效果是相同的。这就起到根据 http 请求类型派发到不同函数的功能,这是类视图的核心了。来,它最后做了属性赋值、修改函数签名等收尾工作后,返回了。很有意思,我们通过源码来看看它是如何把类转化成函数的。把接收的参数原封不动的赋值到类实例中。,也就是你编写的类视图的实例。是个类方法,它的第一个参数。函数,它接收的参数和普通的。

samsion1的博客 453

跟着团子学SAP CO:基于成本的完工百分比结算:Cost-based POC(以项目为例)

本文以英国及北美会计准则下的基于成本的POC的销售型项目结算对PS模块中的完工百分比进行介绍

Lucas1211的博客 2万+

Django的rest_framework认证组件之全局设置源码解析

前言:   在我的上一篇博客我介绍了一下单独为某条url设置认证,但是如果我们想对所有的url设置认证,该怎么做呢?我们这篇博客就是给大家介绍一下在Rest_framework中如何实现全局的设置认证组件的功能。下面就请大家跟着我的思路看博客   如果有对局部设置不清楚的,可以看我的上一篇博客,源码级的分析单独设置Rest_framework的认证组件:https://www.cnblogs....

weixin_33725807的博客 381

从申请到落地:解锁OAI骨科数据集的实战指南与避坑经验

本文是一份详尽的OAI骨科数据集实战指南,重点解析了从NDA账号申请、权限审批到数据定位与高效下载的全流程。文章分享了使用login.gov注册、Chrome浏览器避坑、nda-tools命令行批量下载等核心技巧,并总结了常见问题排查方法,旨在帮助医学影像与骨关节炎研究者高效解锁这一宝贵数据资源。

weixin_29313547的博客 325

Horn-Schunck光流算法的Python实现

光流是计算机视觉领域中的一个重要概念,它描述了图像中物体在时间上的运动。Horn-Schunck光流算法是一种经典的光流估计方法,通过对图像的亮度变化进行建模,来估计像素的运动速度。在本文中,我们将使用Python实现Horn-Schunck光流算法,并提供相应的源代码。请注意,该算法假设图像上的亮度变化主要由物体的运动引起,并且假设光流在整个图像上是稠密的。在上面的示例中,我们首先读取了两个输入图像,然后使用我们实现的Horn-Schunck光流算法估计了它们之间的光流。首先,我们需要导入一些必要的库。

持续更新 495

def __init__(self, **kwargs):中的**kwargs是什么意思

是一种特殊的参数形式,用于接收可变数量的关键字参数(Keyword Arguments)。函数,将这些传递的参数作为属性初始化到类的实例中。因此,可以通过实例对象直接访问这些属性。是一个字典(dictionary),其中关键字是参数名,对应的值是传递给函数的实际参数。,我们可以在创建类的实例时传递任意数量的关键字参数,而无需事先指定参数的名称和个数。常用于接收任意数量的额外参数,并将其作为类的属性进行初始化。

温故而知新,可以为师矣。 1466

linux内核学习(一)---内核社区介绍及补丁提交

本系列开始会对linux内核进行系统性的学习,以源码与内核社区为基础,了解前沿的内核机制,同时也深度了解linux内核中的一些经典机制 本章会先对linux内核社区进行简单的介绍,包括源码下载、内核社区的修改提交

文艺小少年的博客 536

php django 大型网站源码,都说Djnago框架重,那就让哥用15行代码写个django web程序!...

摘要:很多初学django的小伙伴都会了解到,django是个大而全的网络框架,本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。要学这么多内容,要学到猴年马月啊!?不过世界真是奇妙,现在咱们就在猴年马月里!2016年是猴年,按农历计算,6月5日至7月3日是庚午月,正好是“猴年”里的“马月”。那么问题来了:你想不想在猴年马月里学会django呢?下面我们尝试一下,用15行代码结...

weixin_29582919的博客 652

OmniBox2.0.X版本 一站式影视订阅与多端播放平台文档

OmniBox 是一站式影视订阅与多端播放平台:你可以用 JS 或 Python 按 OmniBox 规范自建爬虫源,在后台把多个爬虫源自由组合成订阅,然后在网页、手机、电视等全平台的客户端里使用。只要客户端支持 TVBox、猫源、UZ、Emby 等协议,即可无缝对接。同时支持电视直播源、六大平台直播间和网盘源视频在线观看,通过 Docker 一键部署。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1896

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Django学习笔记:简单Django+Mysql实现学生信息管理系统实现(注册、登录、增删改查)

文章目录一、基本流程二、models定义三、views四、templates静态文件五、源码获取 为了熟悉Django框架的流程,自己写了个管理系统(界面仅通过html实现,简陋至极) 一、基本流程 首先这是一个最简单的流程 #mermaid-svg-5IqZuGJrWBUQh7xE .label { font-family: 'trebuchet ms', verdana, arial; font-family: var(--mermaid-font-family); fill: #3

Demonslzh的博客 5554

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Python源码、框架、笔记学习教程,半个月搞定Django

Python下有许多款不同的Web框架,Django是重量级选手中最有代表性的一位。它由Python写成,采用MVC的软件设计模式,许多成功的网站和APP都基于Django。 无论你是Python开发人员还是Web前端工程师,都要掌握Django框架。接下来小编分享的教程将一步步带你熟悉Django框架,每天进步一点点,半个月就能搞定Django。 教程名称 2019最新Django全套教程 适宜...

qfxulei的博客 264

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

自学python顺序-Django 学习顺序及入门要求?

没有web开发经验和相关背景。有c语言基础和python语法基础。在进行django学习之前,还有哪些基础要求?django的学习顺序是什么?时间较紧张,做一次自己一向鄙视的伸手党。抱歉抱歉。。回复内容:贴一个很早之前挖的坑,可惜这坑一直没填上。中间列了些知识点,是当时整理的框架,可以按照这个顺序来逐步加深对Django的认识。========================分割线========...

q6q6q的专栏 1053

django复习 以及源码

django请求生命周期 在浏览器上输入网址会发生什么事?(地址会朝我对应的ip地址发送get请求,get请求遵循http协议)先进入实现了wsgi协议的web服务器----》进入django---》中间件---》路由---》视图---》取模板,取数据,用数据渲染模板---》返回模板的字符串---》在浏览器上看到页面了 1 wsgi和cgi:通用网关协议# 实现了wsgi协议的web服务器:...

weixin_30339457的博客 195

基于Python+Django的考研学习交流平台设计与实现

今天带来的是基于Python+Django的考研学习交流平台设计与实现,随着考研热度的持续升温,传统的学习方式已难以满足考生对高效、个性化学习资源的迫切需求。因此,利用Python的灵活性和Django框架的强大功能,设计并实现一个集学习资源管理、在线学习、模拟考试、学习交流及报考志愿推荐等功能于一体的考研学习平台,旨在提升考生的学习效率与体验,成为当前教育领域的一个重要研究方向。本课题拟采用PyCharm开发工具,Python语言进行开发,后台使用MySQL数据库进行信息管理,设计开发的考研学习系统。

qq_15801219的博客 3234

Django-源码

闲来无事,就自己看看Django,然后写个个人博客,尚未完成!以后会不断更新此博客的,完全开源,回头挂在Git上! 这是我的开发目录,很简单的一个个人博客 /blog/: models.py 1 #!/usr/bin/env python 2 #coding=utf-8 3 from django.db import models 4 import datetim...

weixin_34387284的博客 6780

Django REST framework之解析器实例以及源码流程分析

解析器 我们都知道源生Django默认只能解析content-type:application/x-www-form-urlencoded头格式的,若果是json格式,form-data格式都要自己处理。 但是在restframework已经为我们做好了,只要配置上,就能帮我们解析请求的数据 举例说明: 表设计: 1 from django.db import model...

weixin_30341745的博客 159

Django全栈开发:构建Python可视化学习系统

数据可视化是现代Web开发中的关键技术,通过将复杂数据转化为直观图表,帮助用户快速理解信息。Django作为Python最流行的Web框架,提供了完整的MVT架构,能够高效实现前后端数据交互。本案例展示了如何利用Django+Chart.js构建学习分析系统,涉及模型设计、视图逻辑和模板渲染全流程。项目特别适合Python全栈开发初学者,通过实战掌握Django核心功能与可视化集成技巧,理解从开发到部署的完整生命周期。关键技术点包括SQLite数据库操作、WSGI部署配置和前端ECharts集成,为后续开发

406

Django rest framework源码分析(1)----认证

一、基础 1.1.安装 两种方式: github pip直接安装 pip install django-rest-framework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework源码中到处都是基于CBV和面向对象的封装 (1)面向对象封装的两大特性 把同一类方法封装到类中 将数据封装到对象中 (...

weixin_30438813的博客 193

Django rest framework源码分析----认证

一.基础 1.1.安装 两种方式: github pip直接安装 pip install djangorestframework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework源码中到处都是基于CBV和面向对象的封装 (1)面向对象封装的两大特性 把同一类方法封装到类中 将数据封装到对象中 (2)CBV 基于反射实现根据请求方式不...

帅泽泽的博客 371

Django验证码【附源码】

Django验证码【附源码】 一、安装依赖 CentOS 第一步: 1 yum install python-devel 第二步: yum install freetype-devel libjpeg-devel libpng-devel 1 2 ...

409
上一篇: 深入学习Django源码基础14 - Django中forms简要分析
下一篇: 深入学习Django源码基础16 - django中信号的学习分析
watsy
博客等级 码龄19年 133粉丝 104原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值