模板层

​ {{}} 变量相关

​ {%%} 逻辑相关 ​

前端获取容器类型的数据统一使用 句点符(.) ​

两种给模板传递值的方式 return render(request,'index.html',{'name':'jason','age':'18'})

return render(request, 'index.html', locals()) # 这个方法虽然好用,但是会把后端函数所有的变量传给前端

过滤器 ​

取消转义(**): ​ 前端: ​ |safe 取消转义 ​

后端: ​ from django.utils.safestring import mark_safe ​

ss1 = mark_safe("<h1>我是h1</h1>")

标签

{% for foo in l %} <!--l = [1,2,3,4,5,6,7,8]-->

<p>{{ foo }}</p>

{% endfor %}

{% if l %}
<p>这个l有值</p>
{% else %}
<p>这个l没有值</p>
{% endif %}

{% for foo in l %} <!--l = [1,2,3,4,5,6,7,8]-->
{% if forloop.first %}
<p>这是我的第一次</p>
{% elif forloop.last %}
<p>最后一次了啊,不能再来了</p>
{% else %}
<p>继续嗨!</p>
{% endif %}
{% empty %}
<p>你给我的这个l是个空的,我没办法for循环</p>
{% endfor %}

{% with d.hobby.2 as h %}

​ {{ h }} # 重命名的变量只能在with里面使用 ​

{# {{ d.hobby.2 }}#} ​

{% endwith %} ​

自定义过滤器
必须做下面三件事:
1.必须在应用下新建一个名为templatetags的文件夹
2.在该文件夹下创建一个任意名的py文件
3.在该文件内必须先写下面两句话
from django import template
resgiter = tmplate.Library()

# 自定义过滤器
@register.filter(name='baby')
def my_sum(a,b):
return a+b
使用:
必须先加载过来
{% load my_tag %}
之后的用法跟自带的过滤器用法相同
{{ xx|baby:10 }}

自定义inclusion_tag ​ 调用自定义的inclusion_tag能够返回一段html代码

@register.inclusion_tag('login.html')

​ def get_html(n): ​ l = [] ​

for i in range(n): ​

l.append('第%s项'%i) ​

return {'l':l}

login.html 中文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for foo in l %}
<li>{{ foo }}</li>
{% endfor %}

</ul>
</body>
</html>

最后在index.HTML中执行下面的方法
{% get_html 5 %}
得到五条记录
第0项
第1项
第2项
第3项
第4项

自定义标签 过滤器 inclusion_tag都是为了能够调用它返回相应的结果
区别:
自定义标签和过滤器返回的仅仅是数据而已
而我的inclusion_tag返回的是一段html代码而已!!!

模板的继承与导入 ​ 模板的继承: ​

需要在你的主页面通过block划定多片区域,给继承了主页面的子页面选择使用哪块区域

​ 子页面中如何使用: {% extends 'home.html' %} # 先将主页面继承过来 通过block块的名字,指定修改哪一片区域 {% block '区域名字' %}

{% endblock %}

{% block content %} ​ <h1>登录页面</h1> ​ {{ block.super }} ​

<form action="" > ​

<p>username:<input type="text" class="form-control"></p> ​

<p>password:<input type="text" class="form-control"></p> ​

<input type="submit" class="btn btn-danger pull-right"> ​

</form>

​ {% endblock %}

在模板中指定一片区域命名为content ​

还可以通过{{ block.super }}继续使用主页面某一个块里面的内容

​ 模板里面定义的块儿越多,可扩展性越高 ​ 通常情况下模板都有三块区域

{% block css %}

{% endblock %}

{% block content %} ​

{% endblock %}

{% block js %}

{% endblock %}

模板的导入的应用场景

​ 你花了好长时间搭建了一个特别好看的form表单(某一个区域) ​

使用方式: ​ {% include 'demo.html' %} 相当于一个模块 可以导入

django 实战篇之模板层的更多相关文章

  1. django 实战篇之路由层

    路由层 如何给网页添加首页及尾页 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'test',views.test), url(r'te ...

  2. Django框架之第五篇(模板层) --变量、过滤器、标签、自定义标签、过滤器,模板的继承、模板的注入、静态文件

    模板层 模板层就是html页面,Django系统中的(template) 一.视图层给模板传值的两种方法 方式一:通过键值对的形式传参,指名道姓的传参 n = 'xxx'f = 'yyy'return ...

  3. Django实战(二)之模板语言

    该实战教程基于菜鸟教程,菜鸟教程可参考:http://www.runoob.com/django/django-template.html 模板语法,每个框架都有其支持的模板语法,Django的模板语 ...

  4. Django中级篇之模板语言

    模板 一.引用变量 模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户. {{ xxx }} 二.标签 用{%  %} ...

  5. django 实战篇之视图层

    视图层(views.py) django必会三板斧 HttpResponse >>> 返回字符串 render >>> 支持模板语法,渲染页面,并返回给前端 red ...

  6. Django之深入了解模板层

    目录 模板语法 模板传值 过滤器 标签 自定义过滤器和标签 模板继承 模板导入 模板语法 前端模板的语法只记住两种就行了. {{ xxx }} 变量相关的 { % % } 逻辑相关的 模板传值 我们通 ...

  7. 03_Django-GET请求和POST请求-设计模式及模板层

    03_Django-GET请求和POST请求-设计模式及模板层 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn. ...

  8. django 之视图层及模板层 04

    目录 视图层 render方法是Template和Contex两个对象的组合使用 JsonResponse对象 CBV及源码分析 CBV 加装饰器的方式 模板层 模板语法传值 模板语法 变量 过滤器( ...

  9. django学习笔记-模板层

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

随机推荐

  1. BeanShell用法汇总(部分摘抄至网络)

    说明:本文部分资料摘抄至 来源: http://www.cnblogs.com/puresoul/p/4915350.html 来源: http://www.cnblogs.com/puresoul/ ...

  2. Word写博常用博客URL地址

    地址 描述 http://imguowei.blog.51cto.com/xmlrpc.php 51cto http://upload.move.blog.sina.com.cn/blog_rebui ...

  3. Tensorflow集成接口TensorLayer、Keras

    https://www.zhihu.com/question/50030898 https://zhuanlan.zhihu.com/p/25296966 https://www.jiqizhixin ...

  4. ESXI 6.5安装详细步骤

    网址:http://blog.51cto.com/laotang6/2044861 ESXi是专为运行虚拟机.最大限度降低配置要求和简化部署而设计.只需几分钟时间,客户便可完成从安装到运行虚拟机的全过 ...

  5. jzoj6099. 【GDOI2019模拟2019.4.1】Dist

    题目链接:https://jzoj.net/senior/#main/show/6099 考虑直接统计某个点到其它所有点的距离和 我们先把整个团当成一个点建图,处理出任意两个团之间的距离\(dis(i ...

  6. mongodb 3.6 集群搭建:分片+副本集

    mongodb是最常用的nosql数据库,在数据库排名中已经上升到了前六.这篇文章介绍如何搭建高可用的mongodb(分片+副本)集群. 在搭建集群之前,需要首先了解几个概念:路由,分片.副本集.配置 ...

  7. SQL学习指南第二篇

    使用集合 union操作符(组合查询) 多数 SQL 查询只包含从一个或多个表中返回数据的单条 SELECT 语句.但是,SQL 也允许执行多个查询(多条 SELECT 语句),并将结果作为一个查询结 ...

  8. solr的域

    solrhom相当于存放数据的地方,里面一个个文件相当于数据库,每个数据库里面有两个文件夹,一个data,一个conf,conf下有一个schema.xml文件,配置域,相当于表的字段. solr中内 ...

  9. Hadoop记录-退役

    一.datanode添加新节点 1.在dfs.include文件中包含新节点名称,该文件在名称节点的本地目录下 [白名单] [/app/hadoop/etc/hadoop/dfs.include] 2 ...

  10. fedora make: gcc:命令未找到(解决方法)

    安装C开发环境 由于gcc包需要依赖binutils和cpp包,另外make包也是在编译中常用的,所以一共需要9个包来完成安装,因此我们只需要执行9条指令即可: yum install cpp yum ...