目录

  模板语法 --- 传值

  摸板语法 --- 过滤器

  模板语法 --- 标签

  自定义过滤器.标签.inclusion_tag

  模板的继承

  

模板语法 --- 传值

{{}}       变量相关

{%%} 逻辑相关

后端部分

def index(request):
n = 123 #整型
f = 11.1 # 浮点型
s = 'liuun' #字符串
b = True #布尔型
l = ['小红','小花','小白'] #列表
t = (11,222,33) #元祖
d = {'username':'liuun','age':18} #字典
se ={'晶晶','小米','西瓜'} #集合 def func():
print('我被执行l了')
return '你的另一半在等你' class MyClass(object):
def get_self(self):
return 'self'
@staticmethod
def get_func():
return 'func'
@classmethod
def get_class(cls):
return 'cls'
obj = MyClass() return render(request,'index.html',locads())

前端部分

<p>{{ n }}</p>
<p>{{ f }}</p>
<p>{{ s }}</p>
<p>{{ b }}</p>
<p>{{ l }}</p>
<p>{{ d }}</p>
<p>{{ t }}</p>
<p>{{ se }}</p>
<p>传递函数名时会自动加括号调用,但是模板语法不支持给函数传额外 的参数:{{ func }}</p>
<p>传递类名的时候也会自动加括号调用(实例化){{}}</p>
<p>内部能够自动判断出当前变量名是否可以加括号调用 如果可以自动执行 针对的是函数名和类名</p>
<p>{{ obj }}</p>
<p>{{ obj.get_self }}</p>
<p>{{ obj.get_func }}</p>
<p>{{ obj.get-class }}</p>

#django 的取值方法只能是用句点符进行取值'.' 可以点键点索引,可以混用.

模板语法 --- 过滤器

# 过滤器类似于 模板语法内置的 内置方法
# django 内置有 60 多个过滤器
# 锅炉器基本语法
{{数据|过滤器:参数}} # 常见的过滤器
<p>统计长度:{{参数|length}}</p>
<p>默认值(第一个参数是布尔值 为 True 时展示第一个参数的值否则展示冒号后面的值):{{参数|default:'啥也不是'}}</p>
<p>文件大小:{{参数|filesizeformat }}</p>
<p>日期格式化:{{参数|date:'Y-m-d H:i:s'}}</p>
<p>切片操作(支持步长):{{参数|slice:'0:4:2'}}</p>
<p>切去字符(包含三个点):{{参数|truncatechars:9}}</p>
<p>切取单词(不包含三个点 按照空格切):{{参数|truncatewords:9}}</p>
<p>移除特定字符:{{参数|cut:" "}}</p>
<p>拼接操作:{{参数|join:'$'}}</p>
<p>拼接操作:{{参数|add:10}}</p>
<p>拼接操作:{{参数|add:msg}}</p>
<p>转义:{{hhh|safe}}</p>
<p>转义:{{sss|asfe}}</p>
<p>转义:{{res}}</p>
<p>默认值:{{参数|default}}</p>

模板语法 --- 标签

 # for 循环

{% for foo in 参数 %}
<p>{{ foo }}
{% endfor %} # if 判断 {% if 参数 %}
<p>你好</p>
{% elif 参数%}
<p>不好</p>
{% else %}
<p>老伙计</p>
{% endif %} # for if 混用 {% for foo in 参数 %}
{% if 参数.first %}
<p>这是第一次</p>
[% elif 参数.last %}
<P>这是最后一次</p>
{% else %}
<p>{{ foo }}</p>
{% endif %}
{% empty %}
<p>for循环的可迭代参数为空时触发 empty</p>
{% endfor %} # 处理字典其他方法
{% for foo in 参数.keys %}
<p>{{ foo }} </p>
{% endfor %} {% for foo in 参数.values %]
<p>{{ foo }}</p>
{% endfor %} {% for foo in 参数.items %}
<p>{{ foo }}</p>
{% endfor %} # with 起别名
{% with 参数.索引 as bb %}
<p>{{ bb }}</p>
{% endwith %}

自定义过滤器.标签.inclusion_tag

三步走

  1 在应用下创建一个名字 '必须' 为 templatetags 文件夹

  2 在该文件内'任意创建'名称的py文件 xxx.py

  3 在该py文件内'必须'先书写下面这俩句( 单词一个都不许错 )

    from django import template

    reqister = template.Library()

#后端部分
from django import template reqister = template.Library() #自定义过滤器(最多只能给俩个参数)
@ register.filter(name='baby')
def my_sum(v1,v2):
return vi + v2 #前端部分
#自定义过滤器的使用
# n = 13
{% load mytag %}
<p>{{ n|baby:12 }}</p> # 输出结果为 25

# 自定义标签
@register.simple_tag(name = 'plus')
def index(a,b,c,d):
  return '%s-%s-%s-%s'%(a,b,c,d)

@自定义标签德用法
{% load mytag %}
<p>{% plus 'liuun' 123 123 123%}</p>

# 自定义inclusion_tag
'''
内部原理
  先定义一个方法
  在页面上调用这个方法,并且可以传值
  该方法会生成一些数据然后传递给一个html页面
  之后将渲染好的结果放到调用的位置
'''
@register.inclusion_tag('left_menu.html')
def left(n):
  data = ['第{}项'.format(i) for i in range(n)]
  return locals()   #将data传递给left_menu.html

{% left 5 %}
# 总结:当tml页面某个地方的页面需要传参数才能够渲染出来,并且在多个页面上都需要使用到该局部
那么就考虑将该局部页面做成 inclusion_tag形式
(bbs 会使用到)

模板的继承

'''
框架不变变内容
'''
# 末班的继承 首先选着一个想要继承的模板页面
{% extands '要继承的模板页面名称' $} #继承之后 子页面和模板页面一样 需要在模板页面上划分子页面可以修改的区域 {% block content %} 模板内容 {% endclovk %} #子页面就可以声明想要修改所划分的区域 {% block content %} 子页面内容
{% endblock %} # 一般情况下模板页面上至少有三块可以被修改的区域
1 css 区域
{% block content %}
html区域
{% endblock %}
2 html 区域
{% block css %}
css区域
{% endblock %}
3 js 区域
{% block js %}
js 区域
{% endblock %}

#一般情况下 模板的页面上部分的区域越多,那么该模板的扩展性越高
#但是如荣太多, 就不如自己直接写

模板的导入

'''
将页面的某一个局部当做一个模块的形式
那个地方需要就可以直接导入使用即可
'''
{% include 'wasai.html' %}

Django( 学习第五部 Django之模板语法)的更多相关文章

  1. Django 学习笔记(五)模板标签

    关于Django模板标签官方网址https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.IF标签 Hello World/vi ...

  2. Django 学习笔记(四)模板变量

    关于Django模板变量官方网址:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.传入普通变量 在hello/Hell ...

  3. Django 学习笔记(三)模板导入

    本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── _ ...

  4. Django框架之第三篇模板语法(重要!!!)

    一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 一.模板语法之变量:语法为 {{ }}: 在 Django 模板中遍历复杂数据结构的关键 ...

  5. Django框架之第三篇模板语法

    一.什么是模板? 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法分类 一.模板语法之变量:语法为 {{ }}: 在 Django 模板中遍历复杂数据结构的关键 ...

  6. Django学习---路由url,视图,模板,orm操作

    Django请求周期 url ->  路由系统  ->函数或者类 -> 返回字符串 或者 模板语言 Form表单提交: 点击提交 -> 进入url系统  ->  执行函数 ...

  7. Django学习笔记之Django中间件

    准备 我们在前面的课程中已经学会了给视图函数加装饰器来判断是用户是否登录,把没有登录的用户请求跳转到登录页面.我们通过给几个特定视图函数加装饰器实现了这个需求.但是以后添加的视图函数可能也需要加上装饰 ...

  8. 前端MVC Vue2学习总结(三)——模板语法、过滤器、计算属性、观察者、Class 与 Style 绑定

    Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...

  9. Django 学习第一天——django 基本介绍和环境搭建

    web 应用设计模式(MTV MVC): MTV: M:models 模型:负责业务数据对象与数据库对象: T:templates 模板:负责如何把数据展示给用户: V:views 视图:负责业务逻辑 ...

随机推荐

  1. Xmind 2020 破解教程

    前言: 今天用xmind试用版记了会笔记,发现哎哟还真好用,于是乎我脑子一热,点击激活,发现年费好尼玛贵,瞬间我就冷静下来了. 于是乎,脑海里立马浮现出两个字:破解!好了废话不多说,直接上傻瓜教程.( ...

  2. pwnable.kr-shellshock-witeup

    思路是:发现文件执行没什么好反馈显示结果的,于是看文件和权限,通过bash文件猜测可能存在破壳漏洞(CVE-2014-6271)漏洞,于是利用它并结合文件权限成功获得flag. 通过scp下载文件至本 ...

  3. java学习网站汇总

    1.https://blog.csdn.net/qq_35571554/article/details/82759668 B+树原理漫画讲解2.https://blog.csdn.net/moakun ...

  4. Spring学习(三)--Spring的IOC

    1.BeanFactory和FactoryBean BeanFactory是一个接口类,定义了IOC容器最基本的形式,提供了IOC容器所应该遵守的基本服务契约. FactoryBean是一个能产生或者 ...

  5. 如何安装eclipse

    1.打开浏览器输入网址:http://www.eclipse.org 进入官方 2.(目前我使用windows操作系统),下拉界面选择"windows"后的"64-bit ...

  6. 【转载】C/走迷宫代码

    1 #include<iostream> 2 #include<windows.h> 3 #include"GotoXY.h" 4 #include < ...

  7. 013 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 07 基本数据类型变量的存储

    013 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 07 基本数据类型变量的存储 变量和它的值如何在内存中进行存储的? 前面学习过:Java中的数据类型分为基本 ...

  8. IDEA使用正则表达式替换

    替换目标:为value添加函数『JSON.stringify()』 vars.put("_id",value); 表达式: //find: (vars.put\(\"_i ...

  9. 硬盘安装Linux

    准备材料:U盘.Linux镜像.UltraISO 1.下载安装UltraISO, 2.打开系统镜像 打开后我们就可以在左边侧栏看到镜像的内容 3.插入U盘,点击:启动->写入光盘映像->选 ...

  10. Docker 启动容器时,报错 WARNING:IPv4 forwarding is disabled. Networking will not work. 的解决办法

    Centos 7 Docker 启动了一个web服务 但是启动时 报 WARNING: IPv4 forwarding is disabled. Networking will not work. 解 ...