CBV源码分析及模板语法之传值 过滤器 标签 继承 导入
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源码分析及模板语法之传值 过滤器 标签 继承 导入的更多相关文章
- Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)
一.Django请求生命周期: 前端发出请求到后端,通过Django处理.响应返回给前端相关结果的过程 先进入实现了wsgi协议的web服务器--->进入django中间件--->路由f分 ...
- drf快速使用 CBV源码分析 drf之APIView分析 drf之Request对象分析
目录 序列化和反序列化 drf介绍和安装 使用原生django写接口 django DRF安装 drf快速使用 模型 序列化类 视图 路由 datagrip 使用postman测试接口 CBV源码分析 ...
- CBV源码分析+APIVIew源码分析
{drf,resful,apiview,序列化组件,视图组件,认证组件,权限组件,频率组件,解析器,分页器,响应器,URL控制器,版本控制} 一.CBV源码分析准备工作: 新建一个Django项目 写 ...
- FBV与CBV 及CBV源码分析
FBV与CBV 及CBV源码分析 FBV(Function Based View) 基于函数的视图 基于函数的视图,我们一直在用没啥好讲的,就是导入模块调用函数执行业务 CBV(Class Based ...
- Django框架(十七)-- CBV源码分析、restful规范、restframework框架
一.CBV源码分析 1.url层的使用CBV from app01 import views url(r'book/',views.Book.as_view) 2.as_view方法 as_view是 ...
- Django框架(十八)—— CBV源码分析、restful规范、restframework框架
目录 CBV源码分析.restful规范.restframework框架 一.CBV源码分析 1.url层的使用CBV 2.as_view方法 3.view方法 4.dispatch方法(可以在视图层 ...
- drf-day2——restful规范、序列化反序列化、基于django编写五个原生接口、drf介绍和快速使用、cbv源码分析
目录 一.restful规范(重要,不难) 概念 十个规范 二.序列化反序列化 三.基于django原生编写5个接口 四.drf介绍和快速使用 概念 安装 代码 五.cbv源码分析 六.作业 1.使用 ...
- 序列化与反序列化、def的介绍与快速使用、cbv源码分析、APIView与request对象分析
今日内容概要 序列化与反序列化 def介绍和快速使用 cbv源码流程分析 drf之APIView和Request对象分析 内容详细 1.序列化和反序列化 # api接口开发 最核心最常见的一个过程就是 ...
- $Django cbv源码分析 djangorestframework框架之APIView源码分析
1 CBV的源码分析 #视图 class login (View): pass #路由 url(r'^books/$', views.login.as_view()) #阅读源码: #左侧工程栏--- ...
- DRF cbv源码分析 restful规范10条 drf:APIView的源码 Request的源码 postman的安装和使用
CBV 执行流程 路由配置:url(r'^test/',views.Test.as_view()), --> 根据路由匹配,一旦成功,会执行后面函数(request) --> 本质就是执 ...
随机推荐
- linux 下用其他用户来执行命令
sudo su - username -l -c "supervisorctl restart apps" -l , –login:加了这个参数之后,就好像是重新登陆一样,大部分环 ...
- 实践:带您用多种姿势将存储在腾讯云COS 上的视频播放
导语 随着5G时代的到来,短视频/直播行业开始流行,音视频逐渐成为信息传播中流量占比最大的部分.腾讯云对象存储(COS)作为可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务,早已不 ...
- iOS开发 React Native与iOS交互汇总
RN简介 React Native 是一个使用React和应用平台的原生功能来构建 Android 和 iOS 应用的开源框架.起源于faceBbook内部,2013开源. React Native ...
- 2022-3-18内部群每日三题-清辉PMP
1.在评估项目活动现状的会议中,团队发现存在一些影响可交付成果的风险.项目经理应该怎么做? A.跟踪已发现的风险,识别和分析新风险,并评估整个项目的风险过程有效性 B.记录风险管理信息用于经验教训 C ...
- 前端循环及跳出for循环
前端循环语句与方法 while循环 语法 1.初始化变量 2.while(条件表达式){逻辑代码循环体} 执行过程: 1.执行初始化变量 2.变量是否满足条件表达式 3.满足执行循环体 4.条件不满足 ...
- Mac下Apache Tomcat安装配置技巧
我们在MAC系统中查看网页时,一般都要使用到tomcat,这是因为appache只支持静态网页,但像asp,php,cgi,jsp等动态就需要tomcat来处理.那么该怎么在自己的MAC中安装tomc ...
- 049_Search Lookup (二)
其实就是 在父object中 设置,search setting 中选中 enhanced lookup, and select the dialoge & Filter 默认looukp搜 ...
- centos7部署elasticsearch-7.16.2分布式集群(此版本修复了log4j2漏洞)
简介 Elasticsearch 是一个分布式.RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例. 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之 ...
- UniCode 下char*转CString ,利用MultiByteToWideChar进行转换,中文乱码的解决方案
//计算char *数组大小,以字节为单位,一个汉字占两个字节 int charLen = strlen(sText); //计算多字节字符的大小,按字符计算. int len = MultiByte ...
- 关于JavaScript的一些用法
关于JavaScript的死链设置问题<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> ...