内容概要

  • 模板层(模板语法)

    模板语法传值

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

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

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

内容详细

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. Day009 稀疏数组

    稀疏数组(数据结构) 场景 需求:编写五子棋游戏中,有存盘和续上盘的功能. 分析问题:因为该二维数组的很多值默认都是0,因此记录了很多没有意义的数据. 解决:稀疏数组 稀疏数组介绍 当一个数组大部分元 ...

  2. Mac使用brew搭建LNMP

    一. brew常用命令 安装brew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/in ...

  3. 取消本地SVN文件夹与服务器的关联

    方法一. 1.新建文本文档,添加内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Fold ...

  4. JVM什么叫安全检测点

    [deerhang] 在JVM的垃圾回收阶段,GC线程首先要进行对象的可达性分析.为了避免多线程对可达性分析的影响引出了安全点检测的概念 当GC线程进行GC前,需要等待其他线程进入安全点.例如JVM调 ...

  5. Mybatis学习之自定义持久层框架(一) 为什么要用框架而不直接用JDBC?

    前言 说起Mybatis,相信大家都不会感到陌生,它是一款优秀的持久层框架,应用于java后端开发中,为客户端程序提供访问数据库的接口. 我们都知道,JDBC是Java语言中用来规范客户端程序如何来访 ...

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

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

  7. 2019c#将PDF转图片

    两种方法: 第一种是用O2S.Components.PDFRender4NET 大家可以去网上查找无水印版本 但是有的时候带颜色的字就变空白了 不知道为什么 第二种是用PdfiumViewer 这种方 ...

  8. 云服务器Apache+MySQL(远程连接)+PHP等环境安装2021.5.9号配置

    云服务器Apache+MySQL(远程连接)+PHP等环境安装2021.5.9号配置 Linux版本:centos8.2 (其他版本提供适配) 安装方式:yum 今天使用centos8系统搭建了下云主 ...

  9. Java集合详解(三):LinkedList原理解析

    概述 本文是基于jdk8_271源码进行分析的. LinkedList底层是基于链表实现.链表没有长度限制,内存地址不需要固定长度,也不需要是连续的地址来进行存储,只需要通过引用来关联前后元素即可完成 ...

  10. Ansible_利用系统角色重用内容

    一.红帽企业Linux系统角色 1.RHEL系统角色 名称 状态 角色描述 rhel-system-roles.kdump 全面支持 配置kdump崩溃恢复服务 rhel-system-roles.n ...