Use the Mako template type: technology-related-posted at: 2010/07/27 23: 53 tags: Python Django Mako in django1.2 |
After reading the Mako document, I thought about changing the template to Mako. By the way, I am familiar with the syntax of Mako. In django1.2 officially added support for third-party templates (see: http://docs.djangoproject.com/en/dev/ref/templates/api/#using-an-alternative-template-language), pondering a while later began to configure Mako under Django. Modify the _ init _. py file under the project and overwrite the template class under Mako. template. ?
12345678910111213 |
#coding: utf-8 from mako import template class DMTemplate(template.Template): def render( self , context): # flatten the Django Context into a single dictionary. context_dict = {} for d in context.dicts: context_dict.update(d) return super (DMTemplate, self ).render( * * context_dict) setattr (template, 'Template' , DMTemplate) |
Create a file django_mako.py in the project path. ?
12345678910111213141516171819202122 |
#coding: utf-8 from mako.lookup import TemplateLookup from django.template.loaders import app_directories import settings mylookup = TemplateLookup( directories = settings.TEMPLATE_DIRS, module_directory = '/tmp/mako_modules' , input_encoding = 'utf-8' , output_encoding = 'utf-8' , encoding_errors = 'replace' , format_exceptions = True , ) class Loader(app_directories.Loader): is_usable = True def load_template( self , template_name, template_dirs = None ): _template = mylookup.get_template(template_name) return _template, _template.source |
Then modify settings. py and use the defined loader. ?
12345 |
TEMPLATE_LOADERS = ( # 'django.template.loaders.filesystem.load_template_source', # 'django.template.loaders.app_directories.load_template_source', 'myblog.django_mako.Loader' , ) |
In this way, you can use the Mako Template under django1.2. |
Mako template engine installation and integration in Django 22:16:44 by sand, 630 visits, tags:
Mako,
Python,
Django, operating system: Linux cent OS 5/max OS X 10.6 snow leopard
Related Environment: Python 2.6.4; Django 1.1.1 installation version: Mako 0.2.5; Django-Mako 0.1.3
Mako is an open-source template engine developed in Python. It has powerful functions and is easy to use. The following describes the installation steps:
- Download: Go to the official website
- Decompress: Tar zxvf Mako -*
- Go to the file directory and run the following command:
Sudo Python setup. py install
- After installation is complete, go to the site-packages directory under your python installation directory and check whether the Mako-0.2.5-py2.6.egg file exists. If yes, the installation is successful.
- Test Program helloword
1) Run python to enter the python Runtime Environment2) enter the following Python code for testing.
from mako.template import Template
mytemplate = Template("hello, ${name}!")
print mytemplate.render(name="sand")
3) If you see hello, sand on the screen! The output indicates that the installation is successful.
Django integration Mako :(Django-Mako pluginMethod)
To use Mako in Django, you must install a separate module Django-Mako.
- Download: Go to the official website
Or easy_install Django-Mako
- Usage:
1) Add a djangomako. Middleware. makomiddleware example to middleware_classes in settings. py of your Django project:MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'djangomako.middleware.MakoMiddleware',
)
2) Add the Django method, for example:
from djangomako.shortcuts import render_to_response
def hello_view(request):
return render_to_response('hello.html', {'name':'sand'})
3) map the URL request/Hello to the method added above in Django
The content of the 42.16.html template file hello.html is as follows:
Hello $ {name }!
5) Start your Django project and access http: // yourhostname/hello in the browser to see if the returned Hello sand is displayed!