CBV的源码分析

# CBV的源码入口从哪里看呢?

CBV的核心源码:
return self.dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs):
'''
request.method => 获取请求方式: GET, POST(都是字符串)
request.method.lower() => 把所有的请求方式都转为小写 :param request:
:param args:
:param kwargs:
:return:
'''
# http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
if request.method.lower() in self.http_method_names:
'''
getattr(self, request.method.lower()) 如果有的话,就返回函数的内存地址
如果不在,是不是走getattr的第三个参数,第三个参数是默认值,
如果找到了,handler就是方法的内存地址
'''
handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
else:
handler = self.http_method_not_allowed
'''
return get(request, *args, **kwargs) 立马执行函数
return handler(request, *args, **kwargs)
'''
return handler(request, *args, **kwargs) class IndexView(View):
# 限制当前类支持的所有方法
http_method_names = ['get', ] def get(self, request):
return HttpResponse('get') def post(self, request):
return HttpResponse('post')

模板语法

模板语法之传值

1. 传值
{{ }} # 一般给变量使用相关
{% %} # 一般跟逻辑相关的 2. 所有需要加括号的都不用加
3. '''模板文件一律使用点语法'''

模板语法之过滤器

# 相当于python的内置函数

语法:
{{ 变量|过滤器:参数 }}
'''竖杠左边的变量当成过滤器的第一个参数,冒号后面的当成第二个参数 如果冒号后面没有参数了,那就是只有一个参数。
过滤器最多传递两个参数。
'''
# 过滤器有很多个,大概有六七十个,我们需要掌握四五个就行
1. length:求长度
2. default:竖杠左边为真,就显示竖杠左边的值,如果为假,则显示默认值。
3. date:格式化时间
4. filesizeformat
5. safe '''
安全相关的:
1. MySQL中会出现SQL注入的问题
2. 前端中会出现xss攻击
3. django中的form表单中会出现csrf跨站请求问题
''' '''xss攻击:不让外部的标签直接生效'''
# 前端的代码有时候也可以在后端写好,然后传递到前端使用
from django.utils.safestring import mark_safe s = mark_safe('<h1>xss攻击</h1>')

模板语法之标签

# 在html中可以使用 if else for循环等

{% for foo in user_dict.keys %}
<p>
{{ foo }}
</p>
{% endfor %} {% for foo in user_dict.values %}
<p>
{{ foo }}
</p>
{% endfor %} {% for foo in user_dict.items %}
<p>
{{ foo }}
</p>
{% endfor %}

模板语法之继承

# 页面之间互相继承。
结合代码一起看

模板导入

# 结合代码一起看

CBV源码分析及模板语法之传值 过滤器 标签 继承 导入的更多相关文章

  1. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...

  2. drf快速使用 CBV源码分析 drf之APIView分析 drf之Request对象分析

    目录 序列化和反序列化 drf介绍和安装 使用原生django写接口 django DRF安装 drf快速使用 模型 序列化类 视图 路由 datagrip 使用postman测试接口 CBV源码分析 ...

  3. CBV源码分析+APIVIew源码分析

    {drf,resful,apiview,序列化组件,视图组件,认证组件,权限组件,频率组件,解析器,分页器,响应器,URL控制器,版本控制} 一.CBV源码分析准备工作: 新建一个Django项目 写 ...

  4. FBV与CBV 及CBV源码分析

    FBV与CBV 及CBV源码分析 FBV(Function Based View) 基于函数的视图 基于函数的视图,我们一直在用没啥好讲的,就是导入模块调用函数执行业务 CBV(Class Based ...

  5. Django框架(十七)-- CBV源码分析、restful规范、restframework框架

    一.CBV源码分析 1.url层的使用CBV from app01 import views url(r'book/',views.Book.as_view) 2.as_view方法 as_view是 ...

  6. Django框架(十八)—— CBV源码分析、restful规范、restframework框架

    目录 CBV源码分析.restful规范.restframework框架 一.CBV源码分析 1.url层的使用CBV 2.as_view方法 3.view方法 4.dispatch方法(可以在视图层 ...

  7. drf-day2——restful规范、序列化反序列化、基于django编写五个原生接口、drf介绍和快速使用、cbv源码分析

    目录 一.restful规范(重要,不难) 概念 十个规范 二.序列化反序列化 三.基于django原生编写5个接口 四.drf介绍和快速使用 概念 安装 代码 五.cbv源码分析 六.作业 1.使用 ...

  8. 序列化与反序列化、def的介绍与快速使用、cbv源码分析、APIView与request对象分析

    今日内容概要 序列化与反序列化 def介绍和快速使用 cbv源码流程分析 drf之APIView和Request对象分析 内容详细 1.序列化和反序列化 # api接口开发 最核心最常见的一个过程就是 ...

  9. $Django cbv源码分析 djangorestframework框架之APIView源码分析

    1 CBV的源码分析 #视图 class login (View): pass #路由 url(r'^books/$', views.login.as_view()) #阅读源码: #左侧工程栏--- ...

  10. DRF cbv源码分析 restful规范10条 drf:APIView的源码 Request的源码 postman的安装和使用

    CBV 执行流程 路由配置:url(r'^test/',views.Test.as_view()),  --> 根据路由匹配,一旦成功,会执行后面函数(request) --> 本质就是执 ...

随机推荐

  1. Vmware workstation虚拟机导入到esxi虚拟机

    VMware Workstation 与 ESXi 的主要区别 VMware Workstation是直接在windows系统下安装软件,安装后再在软件里面安装虚拟机,而ESXi相当于一个linux操 ...

  2. HTML+CSS+JS制作一个黑灰色简约时钟

    HTML+CSS+JS制作一个黑灰色简约时钟 1. 效果图: 2. 特点:这次借鉴了网络上的代码,利用JS动态创建元素,减少html语句的数量,也便于与vue.react等语言进行结合. 3. 代码实 ...

  3. QLineEdit CSS样式

    QLineEdit{ border:1px groove gray; border-radius:18px; padding:2px 4px } QLineEdit:!hover { border-s ...

  4. code的用法

    今天写程序的时候用了const,想到之前遇到的code的用法,那是第一次遇到code的那样的用法,查了一下,解释如下: 在单片机使用C语言进行编程的时候,经常使用到code.code是keil C51 ...

  5. 8.golang语言学习,运算符介绍

    1.算术运算 自增,自减,只能单独使用,++,--只能写在变量后面 2.赋值运算符 优先级,单目运算,赋值运算从右到左运算,其余从左到右,无三目运算,用if实现 3.比较运算符/关系 4.逻辑运算符 ...

  6. vue 和react 不同之我见

    1数据是不是可变的 2通过js操作一切还是各自的处理方式 react的思路是all in js,通过js来生成html,所以设计了jsx,还有通过js来操作css,社区的styled-componen ...

  7. Leetcode48 旋转图像

    48. 旋转图像 难度中等432 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵.请不要使用另一个矩阵 ...

  8. React整洁的代码的一些原则

    1. Model is everything models are  the heart of your app. If you have models separated from th rest ...

  9. mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1

    问题描述:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 解决方法: 在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sq ...

  10. mongodb地理位置坐标加了索引,操作时报错 Location object expected, location array not in correct format

    别犹豫了,将坐标中的数据改为数字类型即可,如: location:[113.45,34,191]