私はWebプロジェクトを構築するためにDjangoを使用しています。 MakoとJinja2のテンプレートがDjangoの方が速いことがわかっているので、Djangoのrender_to_responseメソッドを使ってmakoとJinja2をDjangoに統合する方法を見つけることにします。多くの研究の後、私は最終的にこれを実現させる方法を見つけ出す。しかし、私の統合では、jmeterのパフォーマンスはJinja2(3ms)> Djangoのテンプレート(50ms)> mako(218ms)のようなものです。DjangoとMako Jinja2テンプレートの比較は、render_to_responseを使用して行います。問題?
もし私が何か問題があったら... ...または、plsはjinja2とmakoを統合するためのベストプラクティスをアドバイスするのに役立ちます。以下
は
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)
view.pyが
from draft.jinja2django import render_to_jinja2
def view1(request):
b = "helloworld"
return render_to_jinja2('testjinja.html', context={"test":b})
関連:http://stackoverflow.com/questions/4336713/django-switching-to-jinja2。 – alecxe