python全栈开发day65-templates:tags、母版和继承、组件、静态文件相关、simple_tag和inclusion_tag
一、昨日内容回顾
1.MVC和MTV框架
MVC: model 模型 存写数据
view 视图 给用户展示页面
control 控制器 负责调度 传递指令
MTV:
M:model 模型 ORM操作
T:template 模板 返回HTML页面
V:view 视图 负责主要的业务逻辑
2.变量和点(.)的用法
{{变量名}}
{name_list.0}
{{name_dict.key}}
{{p1.name}}
{{dict.items}}
先调用字典的key值,再属性和方法
3.filters
1.语法:
{{变量|filter:参数}}
2.内置的filter
default:‘noting’
filesizeformat:
add:‘1’
upper
lower
title
rjust:20
ljust:20
center:20
length
slice:“::”
first
last
join:"++"
truncatechars:18
date:"Y-m-d H:i:s"
safe
4.自定义filter
1.在应用app01下创建一个叫temlatetags的python包
2.在templatetags的文件夹下创建py文件 命名
3. 在py文件中写代码from django import template
register = template.Library()
@register.filter
def add_sb(value,arg='aaa'):
return "{}_sb_{}".formart(value,arg)
@register.filter(name='sb')
def add_sb(value,arg='aaa'):
return "{}_sb_{}".formart(value,arg)
4. 使用自定义filter
{% load myfilters %}
{{ name|add_sb:'xxx'}}
{{ name|sb:'xxx'}}
二、今日内容总结
1.tags
1) forloop 系列:
forloop.counter
forloop.counter0
forloop.revcounter
forloop.revcounter0
forloop.first
forloop.last
forloop.parentloop
2)
(1) for 。。。empty。。。
{%for name in namelist%}
{%empty%}
{%endfor%}
(2)if else ..........
if 语句支持and、or、==、<、>、!=、<=、>=、in、not in、is、is not判断
不支持加减乘除等数学运算:
偶数判断:{% if forloop.counter|divisibleby:2 %}
(3){% csrf_token%}
这个标签用于跨站请求伪造保护
在页面的form表单里面写上{% csrf_token %}
(4)with
{% with total=business.employees.count %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}
(5) 注释 {# #}
(6) 注意事项
a.Django模板语言不支持连续判断:
{% if a > b > c %} 不支持 ——> {%if a>b and b>c%}
python:
JS:
b. Django的模板语言中属性的优先级大于方法
2.母版和继承
1). 为什么要模板
节省代码 修改方便。
把所有的公共内容提取到一个页面,在页面上定义block,继承的时候在block块中写内容,覆盖掉母版中的block
2) 用法:
模板:就是一个普通的HTML页面
定义多个block
使用:
继承模板{% extends ‘base.html’%}
使用母版中定义好的block块
在block中写自己的内容
3) 注意事项
(1) 模板中可以定义多个block,一般在定义两个css和js块
(2) {% extends ‘base.html’%} 写在第一行 不要在block之外写东西
(3) {% extends ‘base.html’%} 中要写字符串 是你要继承的模板的名字
3.组件
1 。定义一个HTML文件
很多页面都要用的内容
2 。在要用的页面使用
{% include 'nav.html' %}
4.静态文件相关
1) {% load static%}
"{% static ‘/css/...’ %}"
2) "{% get_static_prefix%}imgs/aa.jpg"
3) {% get_static_prefix as STATIC_PREFIX %} <img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" />
5.simple_tag和inclusion_tag
1) simple_tag
和自定义filter类似,只不过接收更灵活的参数。
定义注册simple tag
@register.simple_tag(name="plus")
def plus(a, b, c):
return "{} + {} + {}".format(a, b, c)
使用自定义simple tag
{% load app01_demo %} {# simple tag #}
{% plus "1" "2" "abc" %}
2) inclusion_tag
三、预习和扩展
python全栈开发day65-templates:tags、母版和继承、组件、静态文件相关、simple_tag和inclusion_tag的更多相关文章
- Django中的tags,母版和继承,组件,静态文件相关,自定义simpletag和自定义inclusion_tag
Tags for <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% endfor %} &l ...
- python Tags 母板 组件 静态文件相关 自定义simpletag inclusion_tag
一.Tags(一)for 1.基本用法 <ul> {% for user in user_list %} <li>{{ user.name }}</li> {% e ...
- python 全栈开发,Day79(Django的用户认证组件,分页器)
一.Django的用户认证组件 用户认证 auth模块 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中: 如果用户存在于数据库中,然后再验证用户 ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- python全栈开发day66-视图系统、路由系统
一.昨日内容回顾 1. tags 1. for循环 {% for name in name_list %} {{ name }} {% endfor %} {% for name in name_li ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
随机推荐
- python连接kafka生产者,消费者脚本
# -*- coding: utf-8 -*- ''''' 使用kafka-Python 1.3.3模块 # pip install kafka==1.3.5 # pip install kafka- ...
- Gitbook
2017年9月13日 17:12:20 星期三 gitbook 可以将markdown格式的文件编译成html格式 放在当前目录里的_book目录里(需要手动创建, 也可以指定编译后的html文件放到 ...
- 【原创】大叔经验分享(38)beeline连接hiveserver2报错impersonate
beeline连接hiveserver2报错 Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost: ...
- 解决FTPClient上传文件为空,显示0字节
JAVA使用FTPClient上传文件时总是为空,而使用FileZilla客户端时却不会. 后来查了下资料,FTP服务器有被动模式和主动模式.(具体查另外资料) 在JAVA中将FTPClient设置为 ...
- C# 操作Excel加水印
首先下载免费版的Excel组件- Spire.XLS,安装完成后在bin目录里面有需要用到的dll文件,引用到自己项目里面. 我这里全引进来了,一共就四个: 界面 效果 全部代码 private st ...
- python 安装mysql报错
原 安装Python mysqlclient出现“OSError: mysql_config not found”错误 2016年06月01日 12:15:11 wangtaoking1 阅读数:11 ...
- tomcat占用cpu比较多
在Linux中当Tomcat启动后,我们只是去查看应用是否能够正常访问来判断Tomcat启动是否正常.一般情况下这样看是没有问题的,但是有时候我们会发现当Tomcat使用了一段时间后,开始出现CPU或 ...
- Android性能优化之图片压缩优化
1 分类Android图片压缩结合多种压缩方式,常用的有尺寸压缩.质量压缩.采样率压缩以及通过JNI调用libjpeg库来进行压缩. 参考此方法:Android-BitherCompress 备注:对 ...
- 对mysql数据库中字段为空的处理
数据库中字段为空的有两种:一种为null,另一种为空字符串.null代表数值未知,空字符串是有值得,只是为空.有时间我们想把数据库中的数据以excel形式导出时 如果碰到字段为空的,为空的字段会被后面 ...
- 姿势摆好,一招学会android的布局优化!
作为android应用来讲,无论应用本身多么美观,功能多么强大,内容多么丰富.但如果App本身打开界面缓慢超过手机16ms刷新一次页面的时间,就会产生卡顿.用户体验都会变得极差,导致用户量减少.所以我 ...