模板语言就是可以将动态数据在html模板渲染的语言

一、接收值渲染

locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染

{{...}}接收一个变量或者值进行渲染

逻辑处理

from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = '叫卖录音网' return render(request, 'index.html', locals()) # 打开页面

html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>{{ a }}</h1>
</body>
</html>

二、接收值,运行代码块

for循环

{% for item in item_list %}

 <a>{{ item }}</a>

  forloop.counter  计数器,记录循环次数
  forloop.first      判断是否是循环第一次,返回布尔值    
  forloop.last    判断是否是循环最后一次,返回布尔值 

 {% endfor %}

逻辑处理

from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = ['首页','产品展示','关于我们'] return render(request, 'index.html', locals()) # 打开页面

html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for i in a %}
<li>{{ i }}</li>
{{ forloop.counter }}
{{ forloop.first }}
{{ forloop.last }}
{% endfor %}
</ul>
</body>
</html>

if判断

{% if ordered_warranty %}  

{% else %}

{% endif %}

逻辑处理

from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): a = ['首页','产品展示','关于我们'] return render(request, 'index.html', locals()) # 打开页面

html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<ul>
{% for i in a %}
{% if i == '首页' %}
<li style="color: #ee1215">{{ i }}</li>
{% elif i == '产品展示' %}
<li style="color: #1b47ee">{{ i }}</li>
{% else %}
<li>{{ i }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>

三、母板-子板-母板继承

母板继承就是访问的页面继承一个母板,将访问页面的内容引入到母板里指定的地方,组合成一个新页面返回给浏览器

一般母板里都是写的一个网页里不变的地方,也就是通用的地方,被继承页(访问页)都是每个页面不同的地方,也就是将页面不同的地方引入到母板组合成一个新页面返回浏览器

母板里一般都是网页的、头部、底部、头部底部css、头部底部js

被继承页(访问页)里一般都是新内容,新内容的css和js

母板:{% block title %} {% endblock %} 设置可调用区块或,有参设置可调用区块,无参调用区块
子板:{% extends "base.html" %} 子板继承母板
   {% block title %} {% endblock %} 设置可调用区块或,有参设置可调用区块,无参调用区块

逻辑处理 

from django.shortcuts import render
from app1.models import * #导入数据库操作模块 #逻辑处理模块
def special(request): return render(request, 'index.html', locals()) # 打开页面

母板

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="/static/css/tou.css">
{% block css %}{% endblock %} #调用子板的css样式
</head>
<body> <div id="tou">头部</div> {% block nei_rong %}{% endblock %} #调用子板的内容区块 <div id="wei">尾部</div>
</body>
</html>

子板(访问页)

{% extends "tou.html" %}  #继承母板

{% block css %}       #设置母版调用css样式区块
<link rel="stylesheet" type="text/css" href="/static/css/index.css">
{% endblock %} {% block nei_rong %}    #设置母版调用字板内容区块
<div id="neir">内容</div>
{% endblock %}

四、帮助方法:
{{ item.event_start|date:"Y-m-d H:i:s"}}    格式化时间
{{ bio|truncatewords:"30" }}            只显示指定字数
{{ my_list|first|upper }}                首字母大写
{{ name|lower }}                       首字母小写

五、自定义html模板可调用函数模块

a、在app应用中创建templatetags目录

b、在目录中创建任意 .py 文件,如:xx.py

在py文件里设置html可调用函数,注意py文件里有几个注意点如下:

#!/usr/bin/env python
# coding:utf-8
from django import template              #必须导入这个模块
from django.utils.safestring import mark_safe #必须导入这个模块 register = template.Library()   #固定格式必须设置这个变量   @register.simple_tag #自定义函数必须用上这个装饰器,html页面才可以调用
def my_simple_time(v1, v2, v3): #自定义函数
return v1 + v2 + v3 @register.simple_tag
def my_input(id, arg):
result = "<input type='text' id='%s' class='%s' />" % (id, arg,)
return mark_safe(result)

c、在使用自定义函数的html文件中导入自定义函数模块 xx.py 文件名
{% load 自定义函数模块名称 %}

d、html页面使用
{% 函数名称 参数 参数 参数 %}

{% load mbanyuyan %}  #导入自定义函数模块
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> {% my_simple_time 1 2 3 %} #传参并且执行自定义函数 </body>
</html>

注意:使用自定义html函数,必须在全局配置文件settings.py里的INSTALLED_APPS注册了app应用

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
)

八 Django框架,模板语言的更多相关文章

  1. 第四篇Django之模板语言

    Django之模板语言 一 模板的执行 模板的创建过程,对于模板,其实就是读取模板(其中嵌套着模板的标签),然后将Model中获取的数据插入到模板中,最后将信息返回给用户 def current_da ...

  2. Django的模板语言

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

  3. django 更新 模板语言

    Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Django的模板语言中按此语法使用:{{ 变量名 ...

  4. 第二百五十九节,Tornado框架-模板语言的三种方式

    Tornado框架-模板语言的三种方式 模板语言就是可以在html页面,接收逻辑处理的self.render()方法传输的变量,将数据渲染到对应的地方 一.接收值渲染 {{...}}接收self.re ...

  5. 3/21 Django框架 模板路径及模板过滤器 1.模板路径查找

    3/21 Django框架 模板路径及模板过滤器 1.模板路径查找 先找settings.py里的TEMPLATES列表下的DIRS路径.如果APP_DIRS为True,还会到注册了的APP文件夹下依 ...

  6. python 之 Django框架(模板系统、过滤器、simple_tag、inclusion_tag、Tags、母版、组件)

    12.35 Django模板系统 {{ }}和 {% %},变量相关的用{{}},逻辑相关的用{%%} app02/views: # 模板语言测试函数 def template_test(reques ...

  7. Django之模板语言(一)

    1.Django的模板语言(简而言之,字符串替换) 1.目前为止已经学过的模板语言: 1.{{ name }}  ------>变量 2. for 循环: {% for i in book_li ...

  8. Django框架-模板层

    Django框架-模板层 一.模板语法传值 1.验证是否python所有的数据类型都可以传递到前端 locals()的妙用:该方法虽然好用,但是在某些情况下会造成资源的浪费 结论:整型.浮点型.字符串 ...

  9. django 中模板语言的各种用法

    模板 1.视图中使用模板 模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户 1.普通方法:HTML被直接硬编码在 P ...

随机推荐

  1. start with git

    Start with git 1.what is GitHub? GitHub is a code hosting platform for version control and collabora ...

  2. nginx做反向代理proxy_pass,proxy_redirect的使用

     大 | 中 | 小  今天用nginx作为trac的反代,发现一个问题,就是登入登出跳转的时候是白页,看了下网页相应内容,发现相应的location是空的.查了一下发现是只单纯用了proxy_pas ...

  3. mysql导出数据库提示警告在GTID模式下面

    [root@db02 tmp]# mysqldump -S /tmp/mysql.sock -A -R --triggers --master-data=2 --single-transaction ...

  4. 推荐扔物线的HenCoder Android 开发进阶系列 后期接着更新

    官网地址:http://hencoder.com/ 我来做一次辛勤的搬运工 HenCoder:给高级 Android 工程师的进阶手册 HenCoder Android 开发进阶: 自定义 View ...

  5. 下载某资源文件并加载其中的所有Prefab到场景中

    using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> / ...

  6. 转载 iOS js oc相互调用(JavaScriptCore) --iOS调用js

    iOS js oc相互调用(JavaScriptCore)   从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这 ...

  7. mysql数据库的导出与导入

    导出 在dos节目,切换到mysql依照文件夹的bin下.输入下面命令 mysqldump -u root -p nxu_life > nxu_life2.sql 运行完毕后.就能够看到在bin ...

  8. SpringMVC基于代码的配置方式(零配置,无web.xml)

    基于配置文件的web项目维护起来可能会更方便,可是有时候我们会有一些特殊的需求,比方防止客户胡乱更改配置,这时候我们须要给配置隐藏到代码中. 1.创建一个动态web项目(无需web.xml) 2.右键 ...

  9. 【BZOJ2081】[Poi2010]Beads hash+调和级数

    [BZOJ2081][Poi2010]Beads Description Zxl有一次决定制造一条项链,她以非常便宜的价格买了一长条鲜艳的珊瑚珠子,她现在也有一个机器,能把这条珠子切成很多块(子串), ...

  10. 如何使用EasyNVR+CDN突破萤石云在直播客户端数量上的限制,做到低成本高性价比的直播

    恰逢五一假期,有以为来自内蒙的用户向我电话咨询,大概的场景是这样的: 目前用户使用的是全套的海康IPC和NVR设备: 海康NVR设备通过设置萤石云平台,由萤石云对外提供直播服务: 萤石云对单个摄像机同 ...