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}}
- {{对象.方法}}
- {{函数名}}
实例:
设置路由如下:
视图函数如下:
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,结果如下:
2、模板层标签
- 作用:将一些服务器端的功能嵌入到模板中,例如流程控制等
- if 标签语法:
{% if 条件表达式1 %}
...
{% elif 条件表达式2 %}
...
{% elif 条件表达式3 %}
...
{% end %}
...
{% endif %}
实例1 :
设计如下路由:
编写如下视图函数:
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,结果如下;
实例2:在线计算器
设计路由如下
视图函数实现如下:注意,这里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
然后分别通过设置两个数和切换运算符来进行计算了
- 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:嵌套循环,表示外层循环
实例:
设计路由如下:
视图函数实现如下:
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,结果如下: