J'utilise Django pour construire mon projet web. Comme on sait que mako et Jinja2 sont plus rapides que ceux de Django, je commence à trouver le moyen d'intégrer mako et Jinja2 dans Django en utilisant la méthode render_to_response de Django. Après beaucoup de recherches, j'ai enfin trouvé le moyen d'y arriver. Cependant, dans mon intégration, la performance du jmeter est quelque chose comme Jinja2 (3ms)> le template de Django (50ms)> mako (218ms).Intégration de Django avec la comparaison de modèles Mako Jinja2 en utilisant: render_to_response. Problème?
Si je me suis trompé avec quelque chose? .... Ou aider à conseiller quelques bonnes pratiques pour intégrer jinja2 et mako.
est en dessous du codage()
Mako2django.py
from django.http import HttpResponse
from django.template import Context
from mako.lookup import TemplateLookup
from mysite.settings import TEMPLATE_DIRS
def render_to_mako(t,c=None,context_instance=None):
path = TEMPLATE_DIRS
makolookup = TemplateLookup(directories=[path],output_encoding='utf- 8',input_encoding='utf-8')
mako_temp = makolookup.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))
Jinja2django.py
from django.http import HttpResponse
from django.conf import settings
from jinja2 import Environment, ChoiceLoader, FileSystemLoader
# Setup environment
default_mimetype = getattr(settings, 'DEFAULT_CONTENT_TYPE')
# Create the Jinja2 Environment
env = Environment(
line_statement_prefix='%',
line_comment_prefix='##',
loader=ChoiceLoader([FileSystemLoader(path) for path in getattr(settings, 'TEMPLATE_DIRS',())]))
def render_to_string(filename, context={}):
return env.get_template(filename).render(**context)
def render_to_jinja2(filename, context={},mimetype=default_mimetype, request = None):
if request: context['request'] = request
return HttpResponse(render_to_string(filename, context),mimetype=mimetype)
Le view.py est similaire comme ci-dessous
from draft.jinja2django import render_to_jinja2
def view1(request):
b = "helloworld"
return render_to_jinja2('testjinja.html', context={"test":b})
Connexe: http://stackoverflow.com/questions/4336713/django-switching-to-jinja2. – alecxe