第三百一十节,Django框架,模板语言
模板语言就是可以将动态数据在html模板渲染的语言
一、接收值渲染
locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染
{ {...}}接收一个变量或者值进行渲染
逻辑处理
from django.shortcuts import renderfrom app1.models import * #导入数据库操作模块#逻辑处理模块def special(request): a = '叫卖录音网' return render(request, 'index.html', locals()) # 打开页面
html
Title { { a }}
二、接收值,运行代码块
for循环
{% for item in item_list %}
<a>{ { item }}</a>
forloop.counter 计数器,记录循环次数 forloop.first 判断是否是循环第一次,返回布尔值 forloop.last 判断是否是循环最后一次,返回布尔值
{% endfor %}
逻辑处理
from django.shortcuts import renderfrom app1.models import * #导入数据库操作模块#逻辑处理模块def special(request): a = ['首页','产品展示','关于我们'] return render(request, 'index.html', locals()) # 打开页面
html
Title
- { % for i in a %}
- { { i }} { { forloop.counter }} { { forloop.first }} { { forloop.last }} { % endfor %}
if判断
{% if ordered_warranty %}
{% else %}
{% endif %}
逻辑处理
from django.shortcuts import renderfrom app1.models import * #导入数据库操作模块#逻辑处理模块def special(request): a = ['首页','产品展示','关于我们'] return render(request, 'index.html', locals()) # 打开页面
html
Title
- { % for i in a %} { % if i == '首页' %}
- { { i }} { % elif i == '产品展示' %}
- { { i }} { % else %}
- { { i }} { % endif %} { % endfor %}
三、母板-子板-母板继承
母板继承就是访问的页面继承一个母板,将访问页面的内容引入到母板里指定的地方,组合成一个新页面返回给浏览器
一般母板里都是写的一个网页里不变的地方,也就是通用的地方,被继承页(访问页)都是每个页面不同的地方,也就是将页面不同的地方引入到母板组合成一个新页面返回浏览器
母板里一般都是网页的、头部、底部、头部底部css、头部底部js
被继承页(访问页)里一般都是新内容,新内容的css和js
母板:{% block title %} {% endblock %} 设置可调用区块或,有参设置可调用区块,无参调用区块
子板:{% extends "base.html" %} 子板继承母板 {% block title %} {% endblock %} 设置可调用区块或,有参设置可调用区块,无参调用区块逻辑处理
from django.shortcuts import renderfrom app1.models import * #导入数据库操作模块#逻辑处理模块def special(request): return render(request, 'index.html', locals()) # 打开页面
母板
Title { % block css %}{% endblock %} #调用子板的css样式头部{ % block nei_rong %}{% endblock %} #调用子板的内容区块尾部
子板(访问页)
{% extends "tou.html" %} #继承母板{ % block css %} #设置母版调用css样式区块 { % endblock %}{ % block nei_rong %} #设置母版调用字板内容区块内容{ % 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-8from 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_tagdef my_input(id, arg): result = "" % (id, arg,) return mark_safe(result)
c、在使用自定义函数的html文件中导入自定义函数模块 xx.py 文件名
{% load 自定义函数模块名称 %}d、html页面使用
{% 函数名称 参数 参数 参数 %}{% load mbanyuyan %} #导入自定义函数模块Title {% my_simple_time 1 2 3 %} #传参并且执行自定义函数
注意:使用自定义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',)