0
点赞
收藏
分享

微信扫一扫

Django(10)-模板层的变量和标签


​​Django(1)-简介​​

​​Django(2)-创建项目及默认项目目录结构介绍​​

​​Django(3)-配置文件详解​​

​​Django(4)-URL和视图​​

​​Django(5)-路由配置实例​​

​​Django(6)-请求及响应​​

​​Django(7)-Get请求和Post请求​​

​​Django(8)-设计模式​​

​​Django(9)-模板层简介与入门实例​​

​​Django(10)-模板层的变量和标签​​

​​Django(11)-模板层的过滤器和继承​​

​​Django(12)-url反向解析​​

​​Django(13)-静态文件​​

​​Django(14)-应用及分布式路由​​

​​Django(15)-模型层及ORM介绍​​

​​Django(16)-ORM基础字段及选项​​

​​Django(17)-ORM创建数据​​

​​Django(18)-ORM常用的查询函数详解及实例演示​​

​​Django(19)-ORM条件查询​​

​​Django(20)-ORM更新操作及实例演示​​

​​Django(21)-ORM删除操作及实例演示​​

​​Django(22)-ORM中F对象和Q对象​​

​​Django(23)-ORM聚合查询和原生数据库操作​​

​​Django(24)-admin后台管理设置步骤以及常见样式详解​​

​​Django实战技巧(1)-开发测试生产环境配置切换处理技巧​​

​​Django实战技巧(2)-git代码仓分支管理技巧​​

​​Django实战技巧(3)-项目配置​​

1、模板的变量

能传递到模板中的数据类型

  • str
  • int
  • list
  • tuple
  • dict
  • unc
  • obj

在模板中使用的变量语法

  • {{变量名}}
  • {{变量名.index}}
  • {{变量名.key}}
  • {{对象.方法}}
  • {{函数名}}

实例:

设置路由如下:

Django(10)-模板层的变量和标签_django


视图函数如下:

from django.shortcuts import render

def say_hello():
return "I can say hello."

class Dog():
age=4
color='black'
def say(self):
return "wang wang wang"

def test_html(request):
dic={}
dic['int']=100
dic['str']='hello world'
dic['lst']=["Tom","Jack","Hellen"]
dic["dict"]={
"a":1,
"b":2
}
dic['func']=say_hello
dic["dog"]=Dog()
return render(request,"test_html.html",dic)

在templates目录下创建test_html.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>整数:{{int}}</h3>
<h3>字符串:{{str}}</h3>
<h3>列表第一个元素:{{lst.0}},第二个元素:{{lst.1}},第三个元素:{{lst.2}}</h3>
<h3>字典:{{dict}}</h3>
<h3>字典中a元素:{{dict.a}},字典中的b元素:{{dict.b}}</h3>
<h3>函数:{{func}}</h3>
<h3>狗对象:{{dog}}</h3>
<h3>狗的颜色:{{dog.color}}</h3>
<h3>狗的年龄:{{dog.age}}</h3>
<h3>狗叫:{{dog.say}}</h3>
</body>
</html>

在浏览器打开 http://127.0.0.1:8080/test_html,结果如下:

Django(10)-模板层的变量和标签_python_02

2、模板层标签

  • 作用:将一些服务器端的功能嵌入到模板中,例如流程控制等
  • if 标签语法:

{% if 条件表达式1 %}
...
{% elif 条件表达式2 %}
...
{% elif 条件表达式3 %}
...
{% end %}
...
{% endif %}

实例1 :

设计如下路由:

Django(10)-模板层的变量和标签_html_03


编写如下视图函数:

from django.shortcuts import render

def test_if(request):
dic={
"x":10
}

return render(request,"test_html.html",dic)

在templates目录下创建test_html.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if x > 5 %}
x 大于 5
{% else %}
x 小于等于 5
{% endif %}
</body>
</html>

在浏览器打开http://127.0.0.1:8080/test_if,结果如下;

Django(10)-模板层的变量和标签_python_04


实例2:在线计算器

设计路由如下

Django(10)-模板层的变量和标签_python_05


视图函数实现如下:注意,这里locals的方法就是将当前的局部变量自动收集为一个字典数据,这样就不需要刻意去构造字典数据了

from django.shortcuts import render

def test_compute(request):
if request.method=="GET":
return render(request,"computer.html")
elif request.method=="POST":
x=int(request.POST["x"])
y=int(request.POST["y"])
op=request.POST["op"]

result = 0
if op=="add":
result=x+y
elif op=="sub":
result=x-y
elif op=="mul":
result=x*y
elif op=="div":
result=x/y
return render(request,"computer.html",locals())

在templates目录下创建compute.html文件,如下:注意,这里在设置运算符的的时候时用力一个if语句,如此即可以做到当在页面点击的时候能够记住我们已经选择的运算符

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>在线简易计算器</title>
</head>
<body>
<form action="/compute" method="post">
<input type="text" name="x" value="{{x}}">
<select name="op">
<option value="add" {% if op == 'add' %} selected {% endif %}>+</option>
<option value="sub" {% if op == 'sub' %} selected {% endif %}>-</option>
<option value="mul" {% if op == 'mul' %} selected {% endif %}>*</option>
<option value="div" {% if op == 'div' %} selected {% endif %}>/</option>
</select>
<input type="text" name="y" value="{{y}}"> =
<span>{{result}}</span>
<div>
<input type="submit" value="开始计算">
</div>
</form>
</body>
</html>

在浏览器打开http://127.0.0.1:8080/compute

然后分别通过设置两个数和切换运算符来进行计算了

Django(10)-模板层的变量和标签_python_06


Django(10)-模板层的变量和标签_django_07


Django(10)-模板层的变量和标签_python_08


Django(10)-模板层的变量和标签_html_09

  • for 标签

{% for item in 迭代对象%}
...循环语句
{% empty %}
... 可迭代对象无数据时填充的语句
{% endfor %}

  • for标签的内置变量
  • forloop.counter:循环的当前迭代从1开始索引
  • forloop.counter0:循环的当前迭代从0开始索引
  • forloop.revcounter:counter值的倒序
  • forloop.revcounter0:conter0值的倒序
  • forloop.first:如果这是第一次通过循环,则为真
  • forloop.last:如果这是最后一次循环,则为真
  • forloop.parentloop:嵌套循环,表示外层循环

实例:

设计路由如下:

Django(10)-模板层的变量和标签_html_10


视图函数实现如下:

from django.shortcuts import render

def test_for(request):

lst=["Tom","Jack","Hellen"]

return render(request,"test_html.html",locals())

在templates目录下创建test_html.html文件,内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test_for</title>
</head>
<body>
{% for name in lst %}
{% if forloop.first %}*******************************{% endif %}
<p> {{forloop.counter}}.{{name}}</p>
{% if forloop.last %}################################{% endif %}
{% empty %}
当前没有数据
{% endfor %}
</body>
</html>

在浏览器中打开http://127.0.0.1:8080/test_for,结果如下:

Django(10)-模板层的变量和标签_html_11


举报

相关推荐

0 条评论