模板变量用双大括号显示,如:
<title>page title: {{title}}</title>
一 模板中使用变量
继续前面的例子,修改 index.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>{{title}}</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta name="keywords" content="Django Template" /> <meta name="description" content="Django Template" /> </head> <body> <center>{{context}}</center> </body> </html>
修改 views.py:
from django.shortcuts import render_to_response def index(req): return render_to_response('index.html', {'title':'Django Template Variable Sample', 'context':'A Sample Of Variable In Django Template !'})
访问 http://127.0.0.1:8000/blog/index 可以看到效果。
二 模板中使用字典变量
修改 views.py:
from django.shortcuts import render_to_response def index(req): user = {'name':'eli', 'age':24, 'sex':'male'} return render_to_response('index.html', {'title':'Django Sample', 'context':user})
http://127.0.0.1:8000/blog/index 内容展示如下:
{'age': 24, 'name': 'eli', 'sex': 'male'}
模板中可以直接使用字典的键,index.html 可以如下:
<body>
<center>{{context.name}}</center>
</body>
如果模板文件中变量太多,可以使用 locals() 函数返回当前作用域中的所有变量组成的字典,使代码保持整洁漂亮!
1 def index(req): 2 var1 = getvar1() 3 var2 = getvar2() 4 render_to_response('index.htm', locals())
三 模板中使用类和列表
views.py:
from django.shortcuts import render_to_response class Person(object): def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex def say(self): return "This is " + self.name def index(req): user = Person('eli', 24, 'male') user_list = ['eli', 'lie', 'iel'] return render_to_response('index.html', {'title':'Django Sample', 'context':user, 'users':user_list})
index.html:
<body>
<center>{{context.name}}</center>
<center>{{context.say}}</center>
<center>
<li>{{users}}</li>
<li>{{users.0}}</li>
</center>
</body>
注意:
1 模板中调用对象的方法时,要求方法无参数,且必须有返回值。
2 模板中调用引用时,优先顺序是:字典、对象属性、对象方法、列表引用