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 %}

模板语法之继承

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

模板导入

# 结合代码一起看

最新文章

  1. windows server 远程连接设置
  2. abrtd是什么进程
  3. Schema约束
  4. jquery mobile 学习总结
  5. xlistview的java(头)
  6. 【开源项目7】Android视图注入库:butterknife
  7. iOS ARC下dealloc过程及.cxx_destruct的探究
  8. WPF窗体视图中绑定Resources文件中字符串时,抛出:System.Windows.Markup.StaticExtension
  9. flume【源码分析】分析Flume的拦截器
  10. Android的Bitmap和BitmapDrawable类解析-android学习之旅(六十)
  11. rs.Open sql,conn,0,2,1
  12. org.apache.maven.archiver.MavenArchiver.getManifest
  13. 关于gitee代码上传下载
  14. js 序列化
  15. Vue2 学习笔记5
  16. CodeForces - 455D
  17. gitlab Api接口使用
  18. Python实现简单的网页抓取
  19. idea中maven导入jar包
  20. C++实现ping功能&lt;转&gt;

热门文章

  1. ABAP 选择屏幕内的组件以及使用
  2. Java流程控制之顺序结构+选择结构
  3. redis分布式锁实现,setnx,nodejs版本
  4. JavaScript基础知识整理(引用类型-Date)
  5. Python 的 Requests 和 Httpx 在爬取应用中的一个区别
  6. fastdfs 上传成功后返回了错误URL,Request URL: http://localhost:8081/121.122.25.133/group1/M00/00/00/wKgZhV63.jpg
  7. PostgreSQL 存储过程 通过设定条件,返回指定的数据表记录
  8. node16 以上版本不能安装 node-sass
  9. nvm在windows下安装与使用
  10. 图像处理|Matlab