1.前言

首先,我们要知道html是一门静态语言,里面没法传一些动态参数,也就是一个写死的html页面。

那么,如果我们想实现在一个html页面里传入不同的参数对应的参数值,这就可以用django框架提供的模板传参功能来解决。

2.模板传参

2.1.先在hello应用下或者【helloworld/hello/】下新建一个templates文件夹,具体层级目录如下。

2.2.在【helloworld/hello/templates】下新建一个【hongjingsheng.html】,【hongjingsheng.html】里的模板变量用{{变量名称}}来表示。

2.3.修改【helloworld/helloworld/settings】下的一个常量【TEMPLATES】里第一个下标值对应的值里的的【DIRS】值为【[str(BASE_DIR)+"/hello/templates",]】。

备注:具体使用原理可以参考这篇文章:https://segmentfault.com/q/1010000013866755。

2.4.在【helloworld/hello/views.py】里新增一个视图函数【hongjingsheng】。

2.5.在【helloworld/helloworld/urls.py】里新增一个url匹配规则【url(r"^xiaohong/$",views.hongjingsheng)】。

2.6.接着,启动django项目【helloworld】的服务,在任一浏览器上输入地址【http://127.0.0.1:8000/xiaohong/】,可以得到正确的页面数据。

3.django常用的模板标签

3.1. if/else标签

条件判断采用if/else标签。

注意点:if语句最后一定要以endif结尾!

{% if condition1 %}
执行这里面的代码块A
{% elif condition2 %}
执行这里面的代码块B
{% else %}
执行这里面的代码块C
{% endif %} # end表示该if语句结束。

3.2. for标签

与python语言里的for语句的情形类似,for标签的循环语法是【for X in Y】:Y是要迭代的序列,X是在每一个特定的循环中使用的变量名称。

每一次循环中,django的html模板渲染机制会渲染在 {% for %} 和 {% endfor %} 之间的所有内容。

注意点:for标签最后一定要以endfor结尾!

<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>

3.3. ifequal标签

{% ifequal 变量A的变量值 变量B的变量值 %} 标签用于比较两个变量的变量值:当两个变量的变量值相等时,执行在 {% ifequal %} 和 {% endifequal %} 之中所有的代码块。

注意点:ifequal标签最后一定要以endifequal结尾!

举个例子,用ifequal标签来比较两个模板变量 user 和 currentuser :

{% ifequal user currentuser %}
<h1>Welcome!</h1>
{% endifequal %}

和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签。

举个例子,用ifequal标签来比较一个模板变量 section 和一个数据类型为str的值"sitenews" :

{% ifequal section 'sitenews' %}
<h1>Site News</h1>
{% else %}
<h1>No News Here</h1>
{% endifequal %}

3.4. ifnotequal标签

{% ifnotequal 变量A的变量值 变量B的变量值 %} 标签用于比较两个变量的变量值:当两个变量的变量值不相等时,执行在 {% ifequal %} 和 {% endifequal %} 之中所有的代码块。

注意点:ifnotequal标签最后一定要以endifnotequal结尾!

举个例子,用ifnotequal标签来比较两个模板变量 user 和 currentuser :

{% ifnotequal user currentuser %}
<h1>Welcome!</h1>
{% endifnotequal %}

和 {% if %} 类似, {% ifnotequal %} 支持可选的 {% else%} 标签。

举个例子,用ifnotequal标签来比较一个模板变量 section 和一个数据类型为str的值"sitenews" :

{% ifnotequal section 'sitenews' %}
<h1>Site News</h1>
{% else %}
<h1>No News Here</h1>
{% endifnotequal %}

3.5. 注释标签

django的html模板的注释标签,是使用{#  #}。

3.6. 其余常用标签

其余常用django模板标签的使用,可以参考该菜鸟教程:https://www.runoob.com/django/django-template.html。

这些内容直接用截图的形式来记录,不多做文字上面的分析了。

具体知识点,都可以参考该菜鸟教程:https://www.runoob.com/django/django-template.html。

3.7. 关于模板标签的具体使用

目前只用截图的形式来记录调试过程的相关重要细节,让大家对模板标签的具体使用有个初步印象。

4.django常用的过滤器

django常用的过滤器,也仍然可以参考该菜鸟教程:https://www.runoob.com/django/django-template.html。

过滤器的具体使用,该菜鸟教程里都有具体代码范例,所以这边就不做相关记录了。 这些过滤器的使用,可以不懂的时候当做新华字典来进行查阅和使用。

django学习-6.模板templates的更多相关文章

  1. django学习--2 模板

    Django 模板 在上一章节中我们使用 django.http.HttpResponse() 来输出 "Hello World!".该方式将数据与视图混合在一起,不符合 Djan ...

  2. django 学习-2 模板

    如何使用渲染模板的方法来显示内容. 1.创建一个项目dream django-admin.py   startproject   dream cd  dream    再创建一个应用 python m ...

  3. Django学习day6——模板

    在day4中,你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. html = "<html><body& ...

  4. Django学习之模板

    一.常用语法 1.变量 2.Filters 3.自定义filter 4.Tags 5.csrf_token 6.注释 7.注意事项 二.母板 2.继承母板 3.块(block) 4.组件 5.静态文件 ...

  5. Django 学习 之 模板(html)与配置静态文件

     一.模板(html) 1.模板语法之变量:语法为 {{ }} 在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法:{{ var_name }} var_name 是一个变量名称,需要和 ...

  6. django 学习-5 模板使用流程

    首先在模板下建一个index.html <!DOCTYPE html><html><head><meta charset="utf-8" ...

  7. Django学习(六) 模板

    下面是一个新闻的模板:mysite/news/templates/news/year_archive.html mysite/news/templates/news/year_archive.html ...

  8. django学习笔记-模板层

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

  9. Django学习之模板标签和变量

    safe过滤器和{% autoescape %}标签 首先看这样一个例子: views.py中: c = '<h3>更上一层楼</h3>' render(request,'te ...

随机推荐

  1. Go语言学习笔记(3)——面向对象编程

    把存货赶紧更新一波(捂脸) 1. 类型系统 类型系统,就是说一种编程语言怎么设计的它的类型的体系结构. 比如基础类型啊,复合类型啊,一些可以指向任意对象的类型啊,以及类型的语义,面向对象的特性,接口, ...

  2. 开发基础 (变量、数据类型、格式化输出、运算符、流程控制、while循环)

    一.变量 name = "SmallNine" 等号前面是变量名(标识符),等号后面是变量值 变量的主要作用:就是把程序运算的中间结果临时存到内存里,已备后面的代码继续调用. 变量 ...

  3. MIT 6.S081 聊聊xv6中的文件系统(上)

    前言 Lab一做一晚上,blog一写能写两天,比做Lab的时间还长( 这篇博文是半夜才写完的,本来打算写完后立刻发出来,但由于今天发现白天发博点击量会高点,就睡了一觉后才发(几十的点击量也是点击量啊T ...

  4. C语言之数据在内存中的存储

    C语言之数据在内存中的存储 在我们学习此之前,我们先来回忆一下C语言中都有哪些数据类型呢? 首先我们来看看C语言中的基本的内置类型: char //字符数据类型 short //短整型 int //整 ...

  5. c++11新特性实战(二):智能指针

    c++11添加了新的智能指针,unique_ptr.shared_ptr和weak_ptr,同时也将auto_ptr置为废弃(deprecated). 但是在实际的使用过程中,很多人都会有这样的问题: ...

  6. Java排序算法(四)希尔排序2

    Java排序算法(四)希尔排序2 希尔排序移步法:分组+直接插入排序组合 一.测试类SortTest import java.util.Arrays; public class SortTest { ...

  7. CPU中的程序是怎么运行起来的

    总述 最近一位朋友问我,开发的代码是怎么在芯片运行起来的,我就开始给他介绍代码的预编译.汇编.编译.链接然后到一般的文件属性,再到代码运行.但是大佬问了我一句,CPU到底是怎么执行到每一个逻辑的,就讲 ...

  8. ABP设置管理模块: Abp.SettingUi

    开源地址: https://github.com/EasyAbp/Abp.SettingUi 一直想宣传一下SettingUi, 因为 懒 工作比较忙, 所以才拖到今天. 关于ABP就不需要我再多废口 ...

  9. Scanner用户交互

    Scanner用户交互 Scanner对象 引入语法: Scanner scanner=new Scanner(System.in);(固定的) 小写scanner为定义的名称 scanner.clo ...

  10. 5.2 spring5源码--spring AOP源码分析三---切面源码分析

    一. AOP切面源码分析 源码分析分为三部分 1. 解析切面 2. 创建动态代理 3. 调用 源码的入口 源码分析的入口, 从注解开始: 组件的入口是一个注解, 比如启用AOP的注解@EnableAs ...