内容概要

  • 模板层(模板语法)

    模板语法传值

    模板语法过滤器(内置方法)

    模板语法标签(流程控制)

    自定义过滤器和标签(了解)
  • 模板的导入与继承(面向对象)

内容详细

1 模板层之模板语法传值

https://www.cnblogs.com/Dominic-Ji/articles/11109067.html#_label15

注释
<!--HTML注释--> 浏览器能够查看
{#模板语法注释#} 浏览器查看不了 def reg(request):
# python基本数据类型
f = 1.1
i = 11
s = 'hello world'
l = [11,22,33,44]
d = {'username':"jason",'password':123}
t = (11,22,33,44,55,66,77)
se = {11,22,33,44,55,66}
b = True
# 函数(自动加括号调用函数 展示的是函数的返回值)
def func(args): # 模板语法不支持给函数传递额外的参数
print('from func')
return '下午有点困'
# 面向对象
class MyClass(object): # 自动加括号实例化产生对象
def get_obj(self):
return 'from obj'
@classmethod
def get_cls(cls):
return 'from cls'
@staticmethod
def get_func():
return 'from func'
obj = MyClass()
# 1.指名道姓的传(需要传的值较少)
# return render(request,'reg.html',{...})
# 2.一次性批量传(效率偏低) 为了教学方便我们使用locals居多
# return render(request, 'reg.html',locals())
return render(request,'reg.html',locals())

2 模板语法取值

取值只能使用句点符(.)
<p>{{ l.0 }}</p>
<p>{{ d.username }}</p>
<p>{{ d.hobby.3.addr }}</p>

3 模板语法之过滤器(内置方法)

<p>过滤器:  管道符 左侧当做过滤器的第一个参数 右侧有时候还可以支持再传一个参数(冒号开头)</p>
<p>统计长度:{{ l|length }}</p>
<p>自增运算:{{ i|add:123 }}、拼接操作:{{ s|add:'去你妹的' }}</p>
<p>日期转换:{{ ctime }}、{{ ctime|date:'Y-m-d' }}</p>
<p>文件大小:{{ file_size|filesizeformat }}</p>
<p>截取字符(三个点也算):{{ desc|truncatechars:6 }}</p>
<p>截取单词(三个点不算):{{ desc|truncatewords:3 }}</p>
<p>切片操作:{{ s|slice:'0:4' }}</p>
<p>默认值(判断布尔值):{{ b|default:'这个东西布尔值是False' }}</p>
<p>文本转义:{{ ht|safe }}</p>
<p>文本转义:{{ xss }}</p>
<p>文本转义:{{ ht1 }}</p> 后端转义
from django.utils.safestring import mark_safe
ht1 = '<h1>一级标题</h1>'
ht1 = mark_safe(ht1)

4 模板语法之标签(流程控制)

{{}}    变量相关(引用变量值)
{%%} 逻辑相关(流程控制 模块方法)

<p>标签: 流程控制</p>
{% for i in lll %}
{% if forloop.first %}
<p>这是我的第一次循环</p>
{% elif forloop.last %}
<p>这是我的最后一次循环</p>
{% else %}
<p>{{ i }}</p>
{% endif %}
{% empty %}
<p>该对象里面没有值</p>
{% endfor %}

5 自定义过滤器、标签、inclusion_tag

1.在应用下创建一个名字必须叫templatetags文件夹
2.在该文件夹内创建一个任意名称的py文件
3.在py文件内必须要书写两行固定的代码
from django.template import Library
register = Library() # 自定义过滤器
@register.filter(is_safe=False,name='aaa')
def my_plus(a,b):
return a + b


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


# 自定义inclusion_tag(自行概括)
@register.inclusion_tag(filename='ccc.html',name='myinc')
def index(n):
new_l = ['第%s页'%i for i in range(1,n+1)]
return locals()

6 模板的继承(使用频率较高)

需求
页面主体不变 部分区域变化

模板继承
1.需要现在母版中使用block提前划定区域
{% block 区域名称 %}
{% endblock %}
2.在子版中先继承再局部替换
{% extends '模版.html' %}
{% block 区域名称 %} {% endblock %}

总结
模板一般情况下都应该至少含有三个区域
css区域
content区域
js区域 补充
{{ block.super }} 调用模版内容

7 模板的导入

{% include 'myform.html' %}

Django基础之模板层的更多相关文章

  1. django学习笔记-模板层

    模板层 将Python嵌入到HTML中. 模板简介 将HTML硬解码到视图并不是那么完美原因如下: 对页面设计时也需要对python代码进行相应的修改,模板可以不就行python代码修改的情况下变更设 ...

  2. Django学习之模板层

    三板斧 render,HttpResponse,redirectrender返回一个HTML页面,并且还能够给该页面传数据render内部原理: from django.template import ...

  3. Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介

    没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...

  4. django基础 -- 4. 模板语言 过滤器 模板继承 FBV 和CBV 装饰器 组件

    一.语法 两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二.变量 1. 可直接用  {{ 变量名 }} (可调用字符串, 数字 ,列表,字典,对象等) ...

  5. Django基础之模板

    Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }} 和 {% %} 变量相关的用{{ }},逻辑相关的用{% %}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成 ...

  6. Django基础篇--模板和路由分发

    Django模板 首先什么是一个模板? 简单来说就是一个网页,可以被view响应给用户 目的是为了解决复杂的显示问题 2. 模板的设置问题 setting.py中的TEMPLATES配置 1)BACK ...

  7. Django基础之模型层(02)

    1 重要概念 # 多表查询 """ 正向查询 反向查询 当前查询对象是否含有外键字段 如果有就是正向 没有无则是反向 口诀: 正向查询按外键字段 多对多需要额外再加一个. ...

  8. Django基础(3)----模型层-单表操作,多表创建

    昨日内容回顾: 1. {% include '' %} 2. extend base.html: <html> ..... ..... ..... {% block content%} { ...

  9. Django基础之模型层(下)

    聚合查询 关键字:aggregate from django.db.models import Max,Min,Sum,Count,Avg 统计所有书的平均价格 models.Book.objects ...

随机推荐

  1. 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件

    碰到这个问题很多次,每次碰到都是去百度找.但是,不尽人意,好在最后还是解决了,所以写下总结. 报错内容: org.apache.catalina.core.StandardContext.startI ...

  2. Jenkins + Docker + ASP.NET Core自动化部署

    本来没想着要写这篇博客,但是在实操过程中,一个是被网络问题搞炸了心态(真心感觉网络能把人搞疯,别人下个包.下个镜像几秒钟搞定,我看着我的几KB小水管真是有苦说不出),另一个就是这里面坑还是有一些的,写 ...

  3. 开箱即用的Vite-Vue3工程化模板

    开箱即用的Vite-Vue3工程化模板 前言 由于临近毕业肝毕设和论文,停更有一段时间了,不过好在终于肝完了大部分内容,只剩下校对工作 毕设采用技术栈Vue3,Vite,TypeScript,Node ...

  4. 有趣的css—简单的下雨效果2.0版

    简单的下雨效果2.0版 前言 笔者上一篇发布的文章有趣的css-简单的下雨效果中有位老哥给我提了一个很棒的建议,大致意思是波纹应该产生于雨滴的消失处. 这是按照老哥的建议完善后的效果图: 由于我制作G ...

  5. 解读vue-server-renderer源码并在react中的实现

    前言 ​ 在博客开发的过程中,有这样一个需求想解决,就是在SSR开发环境中,服务端的代码是是直接通过webpack打包成文件(因为里面包含同构的代码,就是服务端与客户端共享前端的组件代码),写到磁盘里 ...

  6. Jetpack Compose What and Why, 6个问题

    Jetpack Compose What and Why, 6个问题 1.这个技术出现的背景, 初衷, 要达到什么样的目标或是要解决什么样的问题. Jetpack Compose是什么? 它是一个声明 ...

  7. Java安全之Filter权限绕过

    Java安全之Filter权限绕过 0x00 前言 在一些需要挖掘一些无条件RCE中,大部分类似于一些系统大部分地方都做了权限控制的,而这时候想要利用权限绕过就显得格外重要.在此来学习一波权限绕过的思 ...

  8. tigervnc报错

    tigervnc报错

  9. win10系统U盘读取不了怎么解决 三种方法快速解决&quot;文件或目录损坏且无法读取& 发布时间:2020-06-05 09:19:46 作者:佚名 我要评论

    win10系统U盘读取不了怎么解决 三种方法快速解决"文件或目录损坏且无法读取&   发布时间:2020-06-05 09:19:46   作者:佚名    我要评论 win10电脑 ...

  10. Jenkins——安装部署

    1.部署Jdk 由于jenkins需要jdk环境,所以先部署jdk,解压并设置环境变量就行: # tar zxf jdk-8u45-linux-x64.tar.gz # mv jdk-8u45-lin ...