`
duka
  • 浏览: 39789 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在 django 中使用 mako or jinja2 (精简版)

阅读更多
介绍:mako模版跟据多方测试,是目前渲染最快的模版。好不好用,仁者见仁。
下面是我从网上总结下来的精简版。jinja2 也可以用,只要小改一下。
#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下,随时就可以调用了,下面是调的例子:
#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>
<head>
</head>
<body>
<form action="." method="post">
${form}<br />
<input type="submit" value="post"/>
</form>
</body>
</html>
分享到:
评论
25 楼 mengzhaopeng 2010-08-25  
正在学习当中,支持以下
24 楼 mengzhaopeng 2010-08-25  
正在学习当中,支持以下
23 楼 mengzhaopeng 2010-08-25  
正在学习当中,支持以下
22 楼 pangjanne 2010-08-24  
想想问问在mako如何做国际化:
<%! import mako.ext.babelplugin %>
<%def name="title()">
${model._meta.verbose_name} ${_("Admin")}
</%def>
在模板渲染时总是会出错,根本不识别'_'这个符号:
TypeError: 'Undefined' object is not callable
21 楼 duka 2010-08-10  
jcjbrian 写道
Django不爽的地方之一: 没有继承ajax, form也不能用javascript来验证。。。


hehe 看来是被RAILS惯坏了。
20 楼 jcjbrian 2010-08-07  
Django不爽的地方之一: 没有继承ajax, form也不能用javascript来验证。。。
19 楼 闲云无心 2010-05-05  
mako应该不是渲染最快的模板了,我去年拿django,mako,jinja2做过个小测试,就算开了psyco,mako的速度还是没禁用speedsup扩展的jinja2快
18 楼 felinx 2010-04-26  
对django、pylons、bfg、tornado都不够满意,自己从server开始写起中...
17 楼 duka 2010-04-24  
jonyzhu 写道
aninfeel 写道
django看上去很美,遇到特殊定制的很让人抓狂,转到pylons和turbogear了

支持pylons!


我目前也正用 pylons 做一个项目 ,边学边做吧。
hehe
16 楼 jonyzhu 2010-04-23  
aninfeel 写道
django看上去很美,遇到特殊定制的很让人抓狂,转到pylons和turbogear了

支持pylons!
15 楼 mubs 2010-04-16  
范三山 写道
没看懂,这和form有什么关系

这种需求下你怎么设计django的Form?
14 楼 范三山 2010-04-16  
mubs 写道
对于简单的场景Form足够方便,可是对于复杂的html页面如何应用form才是最佳呢?比如常见的master/detail结构的那种页面,页面的上半部分显示作者的相关信息,下半部分显示这个作者书籍的一个列表,这种情况下django好象没有什么好的办法,我都是从request里直接取值的,很繁。


没看懂,这和form有什么关系
13 楼 mubs 2010-04-16  
jjx 写道
不是有formset吗?


Formset中的Form只能是一种类型
12 楼 jjx 2010-04-16  
不是有formset吗?
11 楼 mubs 2010-04-16  
对于简单的场景Form足够方便,可是对于复杂的html页面如何应用form才是最佳呢?比如常见的master/detail结构的那种页面,页面的上半部分显示作者的相关信息,下半部分显示这个作者书籍的一个列表,这种情况下django好象没有什么好的办法,我都是从request里直接取值的,很繁。
10 楼 bluecrystal 2010-04-16  
django form要用好需要费点力气,总体来说,django很不错
9 楼 duka 2010-04-14  
Blithe 写道
范三山 写道
django 除了模板以外 没什么称得上“不好”的地方

form 也不好用


hehe, 我到是感觉 django 的 form 很好用,面面俱到。
8 楼 Blithe 2010-04-14  
范三山 写道
django 除了模板以外 没什么称得上“不好”的地方

form 也不好用
7 楼 范三山 2010-04-13  
django 除了模板以外 没什么称得上“不好”的地方
6 楼 aninfeel 2010-04-13  
django看上去很美,遇到特殊定制的很让人抓狂,转到pylons和turbogear了

相关推荐

    pyjade, Django Jinja2和Mako的Jade 模板系统.zip

    pyjade, Django Jinja2和Mako的Jade 模板系统 PyJade PyJade是 python的一个高性能端口,它将任何. jade 源转换为每个模板语言( 。Django,Jinja2,Mako或者 Tornado ) 。命令行实用程序要简单地将转换输出到控制台...

    Python库 | pyramid_jinja2-1.9.zip

    1. **配置集成**:在Pyramid应用中使用Jinja2,首先需要在设置文件中配置pyramid_jinja2库,指定模板目录和默认模板后缀等参数。 2. **模板渲染**:Jinja2模板可以包含HTML、CSS、JavaScript等,通过变量替换和控制...

    JinJa开发帮助文档

    集成部分涉及到了如何将Jinja2与其他开发工具和框架集成,例如Vim、Babel、Pylons、TextMate等,这有助于开发者在不同的开发环境中使用Jinja2进行模板设计和开发。 文档最后还提供了一些从其他模板引擎切换到Jinja2...

    jinja doc jinja文档pdf

    介绍如何在TextMate编辑器中使用Jinja2。 #### 6.4 Vim 解释如何在Vim编辑器中使用Jinja2。 ### 7. 从其他模板引擎切换 #### 7.1 Jinja1 介绍从Jinja1切换到Jinja2的注意事项。 #### 7.2 Django 说明从Django...

    python中主流的模板系统-Jinja2模板渲染

    2. 业务逻辑控制:相比于Mako模板,Jinja2鼓励将大部分业务逻辑保留在视图或控制器中,模板主要负责展示,避免了模板中过多的复杂逻辑。 3. 性能:与Django模板系统相比,Jinja2在性能上有一定的优势。 4. 可读性:...

    Python库 | jinja2_ospath-0.1.0-py2.py3-none-any.whl

    在Python开发中,结合使用Jinja2和os.path,可以实现模板中对文件和目录的智能操作,如动态构建文件路径、检查文件是否存在、读取文件内容等,大大提升了代码的灵活性和可维护性。 总结来说,"jinja2_ospath-0.1.0-...

    Python库 | jinja2-render-1.3.tar.gz

    Jinja2遵循了Mako和Django模板语言的设计理念,并且在可读性和灵活性上有所提升。它被广泛应用于Web应用开发,尤其是与Flask和Django等框架结合时,能够帮助开发者快速构建动态网页。 Jinja2 Render 1.3是Jinja2的...

    一个在Sublime Text3下使用Python-jinja2模板引擎将编写的Html模板编译为静态html文件的工具插件

    Jinja2是Python的一个现代、设计者友好的模板引擎,它遵循了Mako和Kid模板引擎的设计理念,并且完全符合Python的语法。Jinja2提供了诸如变量、控制流、过滤器、宏、继承等特性,使得HTML模板编写更加简洁和灵活。...

    pypugjs:适用于Django,Jinja2和Mako模板的PugJS语法适配器

    Pypugjs,也称为Pug for Python,是一款强大的工具,它为Python开发者提供了一种在Django、Jinja2和Mako模板中使用Pug(原名Jade)语法的能力。PugJS是一种简洁、优雅的HTML模板语言,其主要设计目标是提高开发者的...

    在Python中使用Mako模版库的简单教程

    Mako是一个高性能的Python模板库,它的语法和API借鉴了很多其他的模板库,如Django、Jinja2等等。 基本用法 创建模板并渲染它的最基本的方法是使用 Template 类:   from mako.template import Template t = ...

    mako for python

    Mako's syntax and API borrows from the best ideas of many others, including Django and Jinja2 templates, Cheetah, Myghty, and Genshi. Conceptually, Mako is an embedded Python (i.e. Python Server Page...

    python 的django,quixote,uliweb三个web框架

    它具有灵活的URL映射,支持多种模板引擎,包括Mako和Jinja2,以及自己的UliTemplate。Uliweb的ORM可以与多种数据库兼容,包括SQLite、MySQL和PostgreSQL。此外,Uliweb强调插件式设计,使得开发者可以通过安装不同的...

    Pythonweb开发=几个模板系统的性能对比.pdf

    在提供的测试中,Jinja2的模板结构清晰,使用了`{% for %}`循环和`{{ }}`表达式。Jinja2支持编译缓存和优化,这有助于提高渲染速度。在实际应用中,Jinja2通常表现出良好的性能。 2. **Cheetah** Cheetah模板系统...

    Flask模板引擎之Jinja2语法介绍

    Jinja2 使用特定的分隔符来区分模板中的不同部分: - **{%%} 语句**:用于执行模板内的控制结构,例如循环或条件判断。 - **{{}} 表达式**:用于输出变量或表达式的值到最终的 HTML 输出中。 - **{##} 注释**:用于...

    Python使用模板共8页.pdf.zip

    Django模板语言(DTL)同样具备了变量、控制流和过滤器等功能,并且与Django的ORM(对象关系映射)系统无缝集成,使得数据库查询结果能直接在模板中使用。 接下来,可能涉及到的是如何组织和使用模板文件。在Flask...

    Python web开发几个模板系统的性能对比.docx

    在测试中,Jinja2的语法简洁明了,使用`{% for %}`进行循环,`{{ i[0] }}`和`{{ i[1] }}`访问数组元素。Jinja2支持编译缓存和其他优化策略,这可能解释了其在实际应用中的高效性能。 2. **Cheetah**:Cheetah模板...

    Python库 | feincms3-0.20.1-py2.py3-none-any.whl

    在项目中使用Feincms3,首先需要在Django项目的settings.py文件中配置并注册Feincms3,然后创建自己的内容类型和页面模型。之后,可以利用Django的视图和模板系统来呈现内容。 总的来说,Feincms3是一个强大且灵活...

Global site tag (gtag.js) - Google Analytics