Chinaunix首页 | 论坛 | 博客
  • 博客访问: 166486
  • 博文数量: 73
  • 博客积分: 3106
  • 博客等级: 中校
  • 技术积分: 730
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-11 22:57
文章分类

全部博文(73)

文章存档

2018年(2)

2016年(1)

2012年(8)

2011年(21)

2010年(41)

我的朋友

分类: Python/Ruby

2010-07-06 22:14:49

在视图中使用模板

Step One:
 

from django.template import Template, Context
from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    t = Template("It is now {{ current_date }}. ")
    html = t.render(Context({'current_date': now}))
    return HttpResponse(html)


Step Two:

from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    #html = "It is now %s." % now
    #t = Template("It is now {{current_date}}.")
    t = get_template('current_datetime.html')
    html = t.render(Context({'current_date':now}))
    return HttpResponse(html)


import os.path

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)


Step Three:

from django.shortcuts import render_to_response
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response('current_datetime.html',{'current_date':now})

render_to_response() 的第一个参数必须是要使用的模板名称。如果要给定第二个参数,那么该参数必须是为该模板创建 Context 时所使用的字典。如果不提供第二个参数, render_to_response() 使用一个空字典。

  • locals() 技巧


def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response('current_datetime.html', locals())


  • get_template()中使用子目录

t = get_template('dateapp/current_datetime.html')


由于 render_to_response() 只是对 get_template() 的简单封装, 你可以对 render_to_response() 的第一个参数做相同处理。对子目录树的深度没有限制,你想要多少层都可以。

注意: Windows用户必须使用斜杠而不是反斜杠。 get_template() 假定的是 Unix 风格的文件名符号约定。

  • include 模板标签


{% include 'nav.html' %}
{% include "nav.html" %}

两个例子的作用完全相同,只不过是为了说明单、双引号都可以通用。
阅读(601) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~