后端朝前端页面传递数据的方式:return HttpResponse(''字符串类型)    具体参照上一篇博客的视图层此处主要介绍通过 render方式传值:第一种:
return render(request,'text.html',{'n':n}
#此处的'n'是一个key,n才是要传过去的变量名对应的值,必须通过字典形式传第二种:
return render(request,'tetx.html',local())
#将当前所在的名称空间的名字全部传递给前端页面后端传函数名到前端(包含对象.方法 本质还是传函数名),会自动加括号调用,可以在前端html页面打印返回值,但是不支持传参后端传对象到前端,就相当于打印了这个对象,不定义__str__的话,打印函数地址前端获取后端传过来的容器类型的内部元素 统一采用句点符(.)  需要注意,集合无法索引取值
t={'name':['a','b']}     >>>     {{t.name.1}}    #b   数字对应的就是列表的索引前端的模板语法可以调用python后端数据类型不需要传参的内置方法。django的模板注释 》》》 {# 是不会出现在前端页面的 #}
原生的html注释 》》》 <!-- 原生的html注释会出现在前端html页面-->

  

过滤器:<p>前端统计字符串的长度:{{ s|length }}</p><p>前端获取数据如果是空就返回default后面默认的参数值:{{ flag|default:'你这个东西是个空'}}</p><p>将数字格式化成表示文件大小的单位:{{ file_size|filesizeformat }}</p><p>{{ ctime }}</p><p>格式化时间(不要加百分号){{ ctime|date:'Y-m-d' }}</p><p>字符串的切片操作:{{ res|slice:'0:8' }}</p><p>{{ res|slice:'0:8:2' }}</p><p>截取固定的长度的字符串 三个点也算:{{ s|truncatechars:10 }}</p><p>按照空格截取文本内容:{{ res|truncatewords:4 }}</p><p>{{ s|truncatewords:4 }}</p><p>{{ 'hahah'|add:'heheheh' }}</p>{#重点#}<p>{{ ht }}</p>            ht ='<p>段落</p>'<p>{{ sr }}</p><p>{{ ht|safe }}</p>       sr = sr = '<script>alert(123)</script>'<p>{{ sr|safe }}</p>通过添加safe,将字符串类型的样式在html页面展示出来    当后端传入css样式的字符串时,前端可通过{{xxx|safe}} 来实现样式的正常渲染
也可以直接传入该字符串对应的变量名,前提是后端已经做好了处理:如下
from django.utils.safestring import mark_safe
xxx = mark_safe('<h1>我是h1标签</h1>')
前端可以直接使用{{xxx}},不需要添加safe

  

标签:for 循环
{% for foo in t %}{{foo}}{{forloop}}
{% endfor %}
此处的forloop是 一个内置方法if 判断
{% if flag %}flag不为空{% else %}flag为空
{% endif %}嵌套使用    当for循环对象l为空时,会触发empty代码块的内容{% for foo in l %}{% if forloop.first %}<p>这是我的第一次</p>{% elif forloop.last %}<p>这是最后一次了啊</p>{% else %}<p>嗨起来!!!</p>{% endif %}{% empty %}<p>你给我的容器类型是个空啊,没法for循环</p>{% endfor %} 

  

自定义过滤器、标签、inclusion_tag前提:
1.在应用名下新建一个名为templatetags文件夹(必须叫这个名字)
2.在该新建的文件夹内新建一个任意名称的py文件
3.在该py文件中需要固定写下面两句代码from django import templateregister = template.Library()一、自定义过滤器   前端只能传两个值,传多个值需要用可索引取值的python类型括起来,然后回去文件里做逻辑处理@register.filter(name='xbb')
def index(a,b):return a+b在前端调用: {{110|xbb: 120}}二、自定义标签
@register.simple_tag(name='heh')
def plus(a,b,c):return a+b+c在前端调用:{% heh 11 22 33%}三、自定义inclusion_tag
@register.inclusion_tag('login.html',name='login')    #第一个参数为调用的html页面
def login(n):    #n为在另一个前端页面传入的参数l = [ '第%s项'%i for i in range(n)]   #列表推导式return {'l':l}                                  #将l返回给login.html页面 在login.html页面,可以只存在一段代码块即可:
<ul>{% for foo in l %}<li>{{ foo }}</li> {% endfor %}
</ul>         在另外一个前端页面调用: {% login 10 %} #完成传值后,login.html页面代码块交由当前页面渲染执行。需要注意:上述三者的调用时,需要事先加载所属的py文件   {% load xxx %}

  

模板的继承与导入一:继承
首先需要在被继承的模板中划分多个区域     #模板名字为 home.html
{% block 取的名字 %}      #名字选为 content内部代码块
{% endblock %}通常情况下,一个模板中至少有三块{% block css %}页面css代码块
{% endblock %}{% block css %}页面js代码块
{% endblock %}{% block css %}页面主体代码块
{% endblock %}子板继承模板1、先继承模板的所有内容
{% extends 'home.html' %}2、再根据block块的名字修改指定区域的内容
{% block content %}需要修改的代码
{% endblock %}注:如果不想改变原始效果,可通过{{block.super()}} 来继续使用模板的样式二:导入   将一段html当做模块的方式导入到另一个html展示
{% include '想导入的html文件名’  %}

  

静态文件配置{% load static %}  <link rel='stylesheet' href="{% static 'css/mycss.css'%}">  # 第一种方式<link rel='stylesheet' href="{% get_static_prefix %}css/mycss.css">  # 第二种方式

  

转载于:https://www.cnblogs.com/changwenjun-666/p/11006656.html

django模板层 (标签,过滤器,自定义inclusion_tag,模板的继承与导入)相关推荐

  1. django之:网页伪静态 JsonResponse form表单携带文件数据 CBV源码分析 模板语法传值 模板语法之过滤器 标签 自定义标签函数 过滤器、inclusion_tag模板的继承导入

    目录标题 一:网页伪静态 1.定义 2.如何实现 二:视图层 1.视图函数返回值问题 2.视图层返回json格式的数据 3.form表单携带文件数据 4.CBV源码分析 1.CBV和FBV: 2.CB ...

  2. Django(10)-模板层的变量和标签

    Django(1)-简介 Django(2)-创建项目及默认项目目录结构介绍 Django(3)-配置文件详解 Django(4)-URL和视图 Django(5)-路由配置实例 Django(6)- ...

  3. Django - 设计模式及模板层

    MVC和MTV MVC = Model - View - Controller (模型 - 视图 - 控制器)模式 M层主要用于对数据库的封装 V层主要用于向用户展示结果 C层用于处理请求.获取数据. ...

  4. Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)

    阅读目录 一.模板语法: 二.过滤器:(Filters) 三.模板的继承与模板的导入 摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模 ...

  5. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...

  6. Django框架学习20--模板变量,模板标签,模板过滤器及自定义模板过滤器,自定义模板标签

    1.模板变量 string 字符串和 int 类型,通过key名称直接取值,如:{{ n_name }} list类型的取值,通过点下班取值,如:{{ fancy.0 }}.{{ fancy.1 }} ...

  7. django-DIL模板自定义过滤器,自定义标签,自定义包含标签

    django-DIL模板自定义过滤器,自定义标签,自定义包含标签 自定义过滤器 DTL模板语言生来只是为了方便的展示信息,所以与编程语言相比显得有点薄弱,有时候不能满足我们的需求.因此django提供 ...

  8. Django框架(23.Django中的模板的标签、变量、过滤器和注释)

    模板 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观 ...

  9. Django 模板中 变量 过滤器 标签 的使用方法

    一.变量 1.变量的形式是:{{variable}}, 当模板引擎碰到变量的时候,引擎使用变量的值代替变量.     2.使用dot(.)能够访问变量的属性     3.当模板引擎碰到dot的时候,查 ...

最新文章

  1. C# BackgroundWorker 详解
  2. OpenCV Viz转变
  3. zabbix中mysql连不上的排错_zabbix 安装及简单排错
  4. java解析静态AIS原始数据
  5. 在ABAP XSLT中调用ABAP类的方法
  6. 机器人的自述作文_机器人的自述作文600字
  7. Shell编程:简洁的 Bash Programming 技巧续篇
  8. Linux系统编程 -- IO缓冲区
  9. 10_android打包的过程
  10. fastText、TextCNN、TextRNN……这里有一套NLP文本分类深度学习方法库供你选择
  11. SpringMVC Ⅰ
  12. 用于薄膜太阳能电池的玻璃上大晶粒多晶硅
  13. 《书生云超融合一体机》T-CAM评审会召开
  14. 4.16周赛---玩游戏
  15. c语言课程设计--打飞碟源代码,飞碟游戏(飞碟游戏规则)
  16. 如何提高Bug敏感度
  17. 对QT的产品,以及QT的一些综合评论 good
  18. 眼镜计算机检查,配眼镜时电脑验光到底准不准?
  19. 数字人民币概论、特征、架构介绍
  20. 如何在本地搭建一个EasyPlayer的H5 demo 播放H265视频流?

热门文章

  1. Java电话号码滚动抽奖_js手机号码批量滚动抽奖代码实现
  2. c语言用数组存储高精度数,高精度运算c语言.pptx
  3. linux shell 获取用户名,shell脚本输出/etc/passwd中shell类型对应的用户名及其个数
  4. android sdk无法启动不了,无法启动Android SDK管理器
  5. Use mingw on windows
  6. linux media v4l2,Linux kernel drivers/media/v4l2-core/videobuf2-v4l2.c拒绝服务漏洞(CVE-2016-4568)...
  7. 徐州工程学院计算机报名,2019年3月江苏徐州工程学院计算机等级考试报名时间...
  8. vue 使用echart图表 随屏幕放大缩小_哈特(HART)475手操器使用教程
  9. 为什么看别人的网站排名都在第一页?有可能是以下三种原因
  10. java 指定格式的date_指定格式的日期字符串转化成java.util.Date类型日期对象