博文导航:
定义模板:
模板语言:Django 模板是一些文本字符串,作用是把文档的表现与数据区分开。模板定义一些占位符和基本的逻辑(模板标签),规定如何显示文档。通常,模板用于生成HTML(Django 模板也可以生成任何基于文本的格式)。
定义模板:
视图传递给模板的数据(注:变量名命名要遵守标识符命名规则)
语法:{{ var }}
变量用于对象的传递:
语法:{{ stu.name }}
变量用于调用对象的方法:
注:在模板中调用对象的方法不能传递参数!
举个栗子:
对应view.py文件
from . import models
def index(request):
# 调用对象
student = models.Students.stuObj.get(pk=1)
# 将对象传入模板中
return render(request,'myMain/index.html',{"num":3333, "stu": student})
我们在创建数据库的Students类中增加方法getName():
class Students(models.Model):
# ......
def getName(self): # 不能传递参数!!
return self.name # 返回数据库中的姓名
对应html模板
<h1>{{ num }}</h1>
<h1>{{ stu.name }}</h1>
<h1>{{ stu.getName}}</h1>
语法:{% tag %}
{% if 表达式 %}
语句
{% endif %}
if-else语句:
{% if 表达式 %}
语句1
{% else %}
语句2
{% endif %}
if-elif语句:
{% if 表达式1 %}
语句1
{% elif 表达式2 %}
语句2
....
{% else %}
语句n
{% endif %}
ifequal、ifnotequal: 如果值相等、不相等
{% ifequal 值1 值2 %} # 如果值1等于值2则执行语句
语句
{% endifequal %}
1、
{% for 变量 in 列表 %}
语句
{% endfor %}
2、
{% for 变量 in 列表 %}
语句1
{% empty %} # 列表为空或列表不存在时继承语句2
语句2
{% endfor %}
3、for循环的一个用法:
{{forloop.counter}} # 用于for循环,表示当前是第几次循环
举个栗子:
对应html模板文件:
<h1>学生列表</h1>
<ul>
{% for stu in students %}
{% if forloop.counter|divisibleby:2%} {# | 为过滤器,divisibleby:取余#}
<li style="color:darkred">
{{forloop.counter}}--{{ stu.name }}--{{stu.age}}
</li>
{% else %}
<li style="color:darkgreen">
{{forloop.counter}}--{{ stu.name }}--{{stu.age}}
</li>
{% endif %}
{% empty %}
<li>目前没有学生信息</li>
{% endfor%}
</ul>
对于的views.py文件:
from django.shortcuts import render
from . import models
def students(request):
list = models.Students.stuObj.all()
return render(request,'myMain/students.html',{'students':list})
显示结果:

【格式:{% include '模板目录' 参数1 参数2... %}】
语法:{{ var | 过滤器}}
- lower:全变为小写
- upper:全变为大写
- divisibleby:取余【格式:{{被取余值 | 取余值}}】(4%2)
- default:若一个变量没有被提供,即获取值为false/空,则可设置默认值default
- date:根据给定格式转换日期为字符串【格式:{{dateVal | date:'y-m-d'}}】
过滤器方法:可用于参数的传递(参数用‘’ 引起来)
举个栗子:
对应html文件
<div>{{ str }}</div>
<div>{{ str|upper}}</div>
<div>{{ list|join:'#' }}</div> <!--其中个# 就为传递的参数(表示用# 连接为字符串)-->
<div>{{ test | default:'我啥也没有'}}</div>
对应views.py 文件
return render(request,'myMain/students.html',{'str':"baby is girl",'list':['good','nice','yemade'],'test':False})
显示结果:
baby is girl BABY IS GIRL good#nice#yemade 我啥也没有
举个例子
举个栗子:
对应html模板
<h1>num = {{num}}</h1>
<h1>num1 = {{num | add:10}}</h1>
<h1>num2 = {{num | add:-5}}</h1>
<!--相当于num/1*5 (乘5)-->
<h1>num3 = {% widthratio num 1 5 %}</h1>
<!--相当于num/5*1(除5)-->
<h1>num4 = {% widthratio num 5 1 %}</h1>
对应views.py文件
return render(request,'myMain/students.html',{'num':10})
显示结果:
num = 10 num1 = 20 num2 = 5 num3 = 50 num4 = 2
单行注释:
{# 注释内容 #}
多行注释:关键字comment
{% comment %}
注释内容
{% endcomment %}
来源:https://www.cnblogs.com/Vera-y/p/11930845.html