-
{{...}} :变量标签
-
{% ... %} :块标签
变量标签
-
主要用于取值
# 访问字典值
render(request,'list.html',{'user':{'name':'张三','age':10}})
姓名:{{ user.name }},年龄:{{ user.age }}
# 访问对象属性
render(request,'list.html',{'today':datetime.datetime.today()})
{{ today.year }}-{{ today.month }}-{{ today.day }}
# 访问对象的方法(不能有参数)
render(request,'list.html',{'title':'hello world'})
{{ title.upper }}
# 访问列表
render(request,'list.html',{'items':['a1','a2']})
{{items.1}}
配置URL
from django.conf.urls import url
from django.contrib import admin
import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'getdata/',views.getdata_view),
]
创建视图
def getdata_view(request):
user = User('zhangsan','123')
return render(request,'list.html',{'user':{'pwd':'456'},'obj':user,'title':'helloworld','hlist':['a1','a2']})
创建模板
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<tr>
<td>{{ user.pwd }}</td>
<td>{{ obj.pwd }}</td>
<td>{{ title.upper }}</td>
<td>{{ hlist.1 }}</td>
</tr>
</table>
</body>
</html>
那块级就更好玩了,可以循环的话,那就是说可以根据出生成
出多个标签之类的吧
for标签
(注:循环序号可以通过{{forloop}}显示)
<h3>循环取值1</h3><hr>
{% for item in person_list %}
<p>{{ item.name }},{{ item.age }}</p>
{% endfor %}
<h3>循环取值2:倒序</h3><hr>
{% for item in person_list reversed %}
<!--序号从1开始-->
<p>{{ forloop.counter }}----->{{ item.name }},{{ item.age }}</p>
<!--序号从0开始-->
<p>{{ forloop.counter0 }}----->{{ item.name }},{{ item.age }}</p>
<!-- 序号倒序 -->
<p>{{ forloop.revcounter }}----->{{ item.name }},{{ item.age }}</p>
{% endfor %}
<h3>循环取值3:字典</h3><hr>
{% for k,v in d.items %}
<p>{{ k }},{{ v}}</p>
{% endfor %}
for....empty
for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,进行操作。
{% for person in person_list %}
<p>{{ person.name }}</p>
{% empty %}
<p>sorry,no person here</p>
{% endfor %}
if标签
{% if %}支持and or not 条件判断(注意==左右空格)
{% if i > 300 %}
<p>大于{{ i }}</p>
{% elif i == 200 %}
<p>等于{{ i }}</p>
{% else %}
<p>小于{{ i }}</p>
{% endif %}
csrf_token:这个标签用于跨站请求伪造保护
<h3>scrf_token</h3>
<form action="/tag/" method="post">
{% csrf_token %}
<p><input type="text" name="haiyan"></p>
<input type="submit">
</form>
自动转义标签
-
自动转义:将HTML自动转换成普通字符串输出。不进行标签解析。
< 会转换为<
> 会转换为>
' (单引号) 会转换为'
" (双引号)会转换为 "
& 会转换为 &
def getdata_view(request):
return render(request,'list.html',{'hello':'<h1>张杰</h1>'})
{% autoescape off %}
Hello {{ name }}
{% endautoescape %}
注释
单行注释 {#...#}
多行注释 {% comment %}...{% endcomment %}
{% comment %}
{% for user in users %}
{% for k,v in user.items %}
{{ forloop.parentloop.counter }} --{{forloop.counter }}--{{ k }}--{{ v }}<br>
{% endfor %}
{% endfor %}
{% endcomment %}