cstar

eli's docs

   :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

模板变量用双大括号显示,如:

<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 模板中调用引用时,优先顺序是:字典、对象属性、对象方法、列表引用

 

posted on 2013-09-29 23:25  exclm  阅读(925)  评论(0编辑  收藏  举报