Django模板系统

Django模板系统

1.常用语法

Django模板中只记录两种符号:

{{ }}表示:变量,在模板渲染中替换成值

{% %}表示逻辑相关操作

2.变量

{{变量名}}

变量名由字母数字和下划线组成

点(.)在模板中有特殊含义,用来指向对象相对应的属性值

测试
def template_test(request):

    num = 1 #数字
    string = "hello world"#字符串
    name_list = ['鸣人','佐助','卡卡西']#列表
    dic ={'name':'凯皇','age':34} #字典
    tup = ('斑爷','止水','水门')#元组
    name_set = {'斑爷','止水','水门'}#集合

    class Person(): #对象
        def __init__(self,name,age):
            self.name=name
            self.age=age
        def talk(self):
            return "打工人打工人,打工人成为人上人"

    JS = Person("js",24)

    return render(request,'template_test.html',
                  {
                    'num':num,
                    'string':string,
                    'name_list':name_list,
                    'dic':dic,
                    'tup':tup,
                    'name_set':name_set,
                    'JS':JS,
                  })
                  
Template 引用   .索引  .key .属性 .方法  方法不加括号

.key > .属性 > .方法 >索引
{{ num }}
<br>
{{ string }}
<br>
{{  name_list}}
<br>
{{ dic }}
<br>
{{ tup }}
<br>
{{ name_set }}
<br>
{{ JS.name }}
{{ JS.age }}
结果
1
hello world
['鸣人', '佐助', '卡卡西']
{'name': '凯皇', 'age': 34}
('斑爷', '止水', '水门')
{'水门', '斑爷', '止水'}
js 24

3.过滤器

{{ value |filter_name:参数}}

default

{{value|default:“默认值”}}

变量不存在,获取变量为空显示默认值

{{ baobei|default:"金金" }}
{{ kong|default: "暂无数据" }}
{#在冒号左右都不要+空格 否则会报错#}
如果传了参数,就以显示参数

在这里插入图片描述

filesize

显示文件的大小

{{ filesize|filesizeformat }}
 'filesize':1024*1024*1024*1024,
1.0 TB

add+

数字的加法,字符串和列表的拼接

{{ 4|add:2 }}
{{ 4|add:-2 }}
{{ '4'|add:'-2' }}
{{ '4'|add:'xxx2' }}
{{  name_list|add:name_list }}
6 
2 
2 
4xxx2
['鸣人', '佐助', '卡卡西', '鸣人', '佐助', '卡卡西']

lower 小写 文本变小写

upper 大写 文本变大写

title 首字母变大写

{{aj_name|lower|upper|title}}
一个过滤器的输出,可以成为一个过滤器的输入

length 变量的长度

{{ name_list|add:name_list|length }}
6

slice :切片

{{ name_list|add:name_list|slice:'0:2' }}
{{ name_list|first }}
获取首个元素
{{ name_list|last }}
获取最后一个元素
{{ name_list|join:'_' }}
通过_拼接
{{ string|truncatechars:'2' }}
通过字符截断
{{ string|truncatewords:'1' }}
通过单词截断

在setting中设置 时间格式
USE_L10N = False
DATETIME_FORMAT ='Y-m-d H:i:s'
TIME_FORMAT ='H:i:s'
DATE_FORMAT ='Y-m-d'

4.自定义过滤器

1.在App下创建一个名为templatetags的python 包(包的名字不能错)

2.创建一个python 文件,文件名自定义为(mytags.py)

3.在python包中

from  django import  template

register = template.Library()
变量名register不能错

4.给函数加 装饰器

#自定义过滤器
@register.filter
def add_arg(value,args):
    #功能
    return  "{}_{}".format(value,args)
    
需要在settings下,配置app中,加入templatetags

在模板中使用
<br>
{% load  mytags %}
{{ name_list.name|add_arg:'rsg' }}

5,模板

for

{% for name in name_list %}
    <li> {{ forloop.counter }}{{ name }}</li>
    <li> {{ forloop.revcounter }}{{ name }}</li>
{% endfor %}

forloop.counter 当前循环的序号
forloop.revcounter 当前循环倒序
forloop.first 是否是第一次循环
forloop.last 是否是最后一次循环

if elif endif

{% if JS.age < 100 %}
    第一个砍
{% elif JS.age == 50 %}
    第二个砍
 {% elif JS.age > 24 %}
    来吧
{% endif %}

不支持算术运算

不支持连续判断

{%csrf_token%}

用于跨站请求,伪造保护用的

在页面的form 表单上面写{%csrf_token%}

母版和继承

母版

1.一个包含多个页面的公告部分

2.定义多个block快,让子页面进行覆盖

继承

1.{% extends “母版的名字”%}

2.重新复写block 块

注意:

1.{% extends “母版的名字”%}母版的名字带引用

2.{% extends “母版的名字”%}写在第一行,上面不写内容

3.要显示的内容要写在block中

4.多写一个css/js的block块中

组件

1.把一小段公用的HTML文本写入一个HTML文件,nav.html

2.在需要该组件的模块中引用

{% include 'nav.html'%}

静态文件

{% load static %}

simple_tag

inclusion_tag

.{% extends “母版的名字”%}母版的名字带引用

2.{% extends “母版的名字”%}写在第一行,上面不写内容

3.要显示的内容要写在block中

4.多写一个css/js的block块中

组件

1.把一小段公用的HTML文本写入一个HTML文件,nav.html

2.在需要该组件的模块中引用

{% include 'nav.html'%}

静态文件

{% load static %}

simple_tag

inclusion_tag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡卡卡丶西都

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值