用了一个月后,终于忍受不了Django的模板了。主要原因是模板内不能运行原生的python语句,所以用起来总感觉被人绑住手脚,遍历个字典都要搞半天。

所以决定用第三方的模板。查了一下,django用的第三方模板中,性能较好的是mako和jinja2。看了它们的语法后,发现mako会更为简洁,所以选择了mako。

1.安装

安装mako,使用 pip install Mako 命令 安装mako

安装django-mako  下载https://pypi.python.org/pypi/django-mako  然后用命令 python setup.py install 安装

有时安装会一直停在Reading http://pypi.python.org/simple/MyghtyUtils/,这是已经安装成功,直接ctrl+c关闭进程即可

2.在项目的setting.py文件所在的目录下新建一个mymako.py

#mymako.py
from 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__), 'template/')
mylookup = TemplateLookup(directories=[path],output_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))

path参数是模板所在的目录

3.在views中调用

def test(request):

        from mymako import  render_to_response
return render_to_response("test1.html",{"name":"kevin"})

4.mako模板中的继承
index.html

## index.html
<%inherit file="base.html"/> <%def name="body()">
some html code
</%def>

base.html

## base.html
<html>
<body>
<div class="header">
hello
</div> ${self.body()} <div class="footer"> </div>
</body>
</html>

5.python语句

<div  id="read">
% for key in result_dict: <p>
<b>${key_ench[key]} </b> : ${result_dict[key]}
</p>
% endfor
<p>
<b>服务器 </b> : ${server_role}
</p> </div>

6.包含一个HTML文件

<%include file="metric_header.html",args="realtime_server_conf=realtime_server_conf" />

参考资料:

http://duka.iteye.com/blog/634208

http://wenku.baidu.com/link?url=IFCIRrDgu0qnf29DjeSoroIiGIhSypoIuqfW2tliPVdWrycAhBCzi4ELGTxJzrLznBvHOUqkIIGOK-MiDkDXnYbSqmhKFaMtQT_U-db4pM3

http://www.sandzhang.com/blog/2010/04/03/install-mako-templates-and-plugin-for-django/

DEBUG

以前

1.在mako模板中,python块<% %>要放在 def里面,不然会弹出“undefined"错误,例如变量的定义  a='aa'

2.当模板报错 <mako.runtime.Undefined object at 0x2edd750> 时是因为模板中存在没定义的变量

3.当模板报错 Undefined  时是因为模板中存在没定义的变量

10-17

报错

(IndentationError) expected an indented block (line ) ('for key in result_dict:\rpass') in file '/data/web/mcyw/mcyw_web/mcyw_web/template/cmdb_server_report1.html' at line:  char: 

原因是使用了pycharm新建一个html文件,可能是pycharm新建的文件有问题,每一行都加了\rpass,所以模版报错,复制一个原谅的html文件,然后再上面修改就没有问题了

在Django中使用Mako模板的更多相关文章

  1. Django中如何查找模板

    参考:http://my.oschina.net/zuoan001/blog/188782 Django的setting中有关找模板的配置有如下两个: TEMPLATE_LOADERS TEMPLAT ...

  2. python2 + Django 中文传到模板页面变Unicode乱码问题

    1.确保views页面首行设置了默认编码   # -*-coding:utf-8 -*- 2.确保html页面的编码为 utf-8 3.确保项目setting文件设置了 LANGUAGE_CODE = ...

  3. Django中的Templates

    1.定义: 定义和flask框架中的是一样的,唯一的不同就是Django中有自己的模板引擎,并非Jinja2,因此有一些不同之处. 2.模板的设置 在 settings.py 中 设置 TEMPLAT ...

  4. django url路径与模板中样式相对路径的问题

    static目录下有css和js及image等文件夹,里面放置网站的一些静态文件,static位于网站根目录下,django中配置静态文件这个就细说,网上都有,昨天在添加新内容时发现一个问题,我的ur ...

  5. Django 中url补充以及模板继承

    Django中的URL补充 默认值 在url写路由关系的时候可以传递默认参数,如下: url(r'^index/', views.index,{"name":"root& ...

  6. Django中模板使用

    第一步:配置 1.在工程中创建模板目录templates. 2.在settings.py配置文件中修改TEMPLATES配置项的DIRS值:TEMPLATES = [ { 'BACKEND': 'dj ...

  7. Django(四)模板文件中的循环

    编辑views.py from django.shortcuts import render from django.shortcuts import HttpResponse #此行增加 # Cre ...

  8. django中模板变量与内置标签以及过滤器

    本文参考 官方文档 . 一  模板变量 格式: {{ variable_name }} variable_name   命名规则与变量命名规则类似,允许字符数字下划线,不允许标点. variable_ ...

  9. Django中ORM模板常用属性讲解

    学习了ORM模板中常用的字段以及使用方法,具体如下: from django.db import models # Create your models here. # 如果要将一个普通的类映射到数据 ...

随机推荐

  1. 收集内存信息(总量、可用、已用、百分比)导出到csv

    #############################脚本功能及说明##################################################该脚本用来在各台ERP服务器 ...

  2. 基于Cloudera Manager5配置HIVE压缩

    [Author]: kwu 基于Cloudera Manager5配置HIVE压缩,配置HIVE的压缩.实际就是配置MapReduce的压缩,包含执行结果及中间结果的压缩. 1.基于HIVE命令行的配 ...

  3. CRF++使用小结(转)

    1. 简述 近期要应用CRF模型,进行序列识别.选用了CRF++工具包,详细来说是在VS2008的C#环境下,使用CRF++的windows版本号.本文总结一下了解到的和CRF++工具包相关的信息. ...

  4. ognl表达式和s标签

    1.ognl表达式: Ognl上下文对象:(他是一个可以存储数据的空间结构,而且在这个结构中包含之前 jsp中的作用域对象) (放在 value stack控件),当前访问的Action这个上下文对象 ...

  5. 转:maven报错非法字符:\65279 错误

    开发中一个项目很早就报这个错,maven报错非法字符:\65279 错误,今天终于忍无可忍要解决它 :编译java文件的时候,有些java文件报非法字符 \65279错误,在网上找和很多 方法,也试了 ...

  6. 转:XMLP报表导出为excel时设置文本不自动转为数字

    转自:http://yedward.net/?id=337 对于这个问题,只要在RTF模版中设置下强制LTR即可,设置方法如下: 图1:勾选强制LTR 也可以自己输入下面的代码: <fo:bid ...

  7. H5 canvas 小demo之小球的随机运动

    1:结构之html----balls.html <!DOCTYPE html> <html> <head lang="en"> <meta ...

  8. SSIS结合BCP及SQL Server作业实现定时将数据导出打包实现数据同步

    首先这个流程要实现的功能大致是: 有两台服务器,一台是对外网开发的,一台是内网的.那么很明显数据交互都是外网服务器在做,而这个流程要做的就是要将外网上面的数据定时同步到内网中. 我们依对其中某张表的操 ...

  9. MVC小系列(十六)【在控制器级别或具体Action级别上动态设定模板页(Layout)】

    方法就是使用:ActionFilterAttribute它的几个方法:OnActionExecuted,OnActionExecuting,OnResultExecuted和OnResultExecu ...

  10. IOS_OC_百度地图与社交分享

    前奏. 知识点介绍 一. 导航和画线 地图画线 (理解) 二. 百度地图 集成百度地图 (掌握) POI检索 (掌握) 三. 社交分享 系统自带分享 (了解) 友盟分享 (掌握) SSO授权 (理解) ...