[svn] added new jinja unittest and added snipped contributed by Bryan McLemore.
authorArmin Ronacher <armin.ronacher@active-4.com>
Tue, 29 May 2007 21:07:48 +0000 (23:07 +0200)
committerArmin Ronacher <armin.ronacher@active-4.com>
Tue, 29 May 2007 21:07:48 +0000 (23:07 +0200)
--HG--
branch : trunk

docs/src/devrecipies.txt
docs/src/frameworks.txt
tests/test_various.py

index b5dc098bc9aef032379e824c78edd36ad08dbdfe..bad76c03acf40be33018b496674315524b69fc0c 100644 (file)
@@ -73,3 +73,31 @@ And use it:
 
 Also keep in mind that Jinja knows about keywords, thus you cannot have a filter
 that is called `pluralize` for example.
+
+
+Using Jinja in Django
+=====================
+
+This snippet was contributed by Bryan McLemore. It provides a `render_to_response`
+function similar to the one shipped with django just that it uses Jinja for
+rendering. It applies the context processors on the context and consumes a
+`RequestContext`:
+
+.. sourcecode:: jinja
+
+    from django.template.context import get_standard_processors
+    from django.http import HttpResponse
+    from jinja import Environment, FileSystemLoader, ChoiceLoader
+    from django.conf import settings
+
+    loaders = []
+    for location in settings.TEMPLATE_DIRS:
+        loaders.append(FileSystemLoader(location))
+    env = Environment(loader=ChoiceLoader(loaders))
+
+    def render_to_response(template, context, request=None):
+        template = env.get_template(template)
+        if request:
+        for processor in get_standard_processors():
+            context.update(processor(request))
+        return HttpResponse(template.render(context))
index 952dd0075780f2cb801a194180f109e6c5e5271f..930b001f4be3cfe3e066ffa8771fd2ff0545a404 100644 (file)
@@ -115,6 +115,16 @@ Because nobody implemented this specification so far it's not documented here
 but in the sourcecode of the `plugin module`_. The specification itself is
 explained on the pocoo trac on the `General Template Interface`_ wiki page.
 
+
+Django
+======
+
+Using Jinja in django is straightforward because django has a pretty low
+level response interface. Just have a look at the `developer recipies`_,
+there are some examples for django.
+
+
 .. _Pylons: http://www.pylonshq.com/
 .. _General Template Interface: http://trac.pocoo.org/wiki/GeneralTemplateInterface
 .. _plugin module: http://trac.pocoo.org/browser/jinja/trunk/jinja/plugin.py
+.. _developer recipies: devrecipies.txt
index 62b516c9e640a89f6de1745e536829daf2a1c0bb..a4c148a7f2df14e956fd5d7bc3fe9aacd17c43a0 100644 (file)
@@ -47,6 +47,13 @@ def test_raw(env):
     assert tmpl.render() == '{{ FOO }} and {% BAR %}'
 
 
+def test_crazy_raw():
+    from jinja import Environment
+    env = Environment('{', '}', '{', '}')
+    tmpl = env.from_string('{raw}{broken foo}{endraw}')
+    assert tmpl.render() == '{broken foo}'
+
+
 def test_cache_dict():
     from jinja.utils import CacheDict
     d = CacheDict(3)