在 django 中使用 mako or jinja2 (精简版) - Python,Django - language - ITeye论坛

在 django 中使用 mako or jinja2 (精简版) - Python,Django - language - ITeye论坛

介绍:mako模版跟据多方测试,是目前渲染最快的模版。好不好用,仁者见仁。

下面是我从网上总结下来的精简版。jinja2 也可以用,只要小改一下。


Python代码   收藏代码
  1. #mymako.pyfrom django.template.context import Context  
  2. from django.http import HttpResponse  
  3. from mako.template import Template  
  4. from mako.lookup import TemplateLookup  
  5. import os  
  6.   
  7. def render_to_response(t,c=None,context_instance=None):  
  8.     path = os.path.join(os.path.dirname(__file__), 'templates/')  
  9.     mylookup = TemplateLookup(directories=[path],output_encoding='utf-8',input_encoding='utf-8')  
  10.     mako_temp = mylookup.get_template(t)  
  11.     if context_instance:  
  12.         context_instance.update(c)  
  13.     else:  
  14.         context_instance = Context(c)  
  15.     data = {}  
  16.     for d in context_instance:data.update(d)  
  17.     return HttpResponse(mako_temp.render(**data))  
#mymako.pyfrom django.template.context import Context
from django.http import HttpResponse
from mako.template import Template
from mako.lookup import TemplateLookup
import os

def render_to_response(t,c=None,context_instance=None):
    path = os.path.join(os.path.dirname(__file__), 'templates/')
    mylookup = TemplateLookup(directories=[path],output_encoding='utf-8',input_encoding='utf-8')
    mako_temp = mylookup.get_template(t)
    if context_instance:
        context_instance.update(c)
    else:
        context_instance = Context(c)
    data = {}
    for d in context_instance:data.update(d)
    return HttpResponse(mako_temp.render(**data))


把上面这个 mymako.py 放到 project下,随时就可以调用了,下面是调的例子:


Python代码   收藏代码
  1. #views.py  
  2. from django.template import RequestContext  
  3. from mymako import render_to_response  
  4. from django import forms  
  5.   
  6. def index(request):  
  7.     if request.method == 'GET':  
  8.         form = MyForm()  
  9.     else:  
  10.         form = MyForm(request.POST)  
  11.     return render_to_response('mako_temp.html',{'form':form},RequestContext(request))  
  12.   
  13. class MyForm(forms.Form):  
  14.     name = forms.CharField(label='name',required=True)  
#views.py
from django.template import RequestContext
from mymako import render_to_response
from django import forms

def index(request):
    if request.method == 'GET':
        form = MyForm()
    else:
        form = MyForm(request.POST)
    return render_to_response('mako_temp.html',{'form':form},RequestContext(request))

class MyForm(forms.Form):
    name = forms.CharField(label='name',required=True)




mako_temp.html


Html代码   收藏代码
  1. <html>  
  2. <head>  
  3. </head>  
  4. <body>  
  5. <form action="." method="post">  
  6. ${form}<br />  
  7. <input type="submit" value="post"/>  
  8. </form>  
  9. </body>  
  10. </html>  
posted on 2012-04-28 15:00  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/04/28/2475156.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值