Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Add missing imports and models to the examples in the template layer …

…documentation
  • Loading branch information...
commit 7264e5c66110b6748b1d40ee3b0d511c71f3232f 1 parent a7e2835
Silvan Spross sspross authored
Showing with 40 additions and 15 deletions.
  1. +33 −15 docs/howto/custom-template-tags.txt
  2. +7 −0 docs/ref/templates/api.txt
48 docs/howto/custom-template-tags.txt
View
@@ -300,18 +300,21 @@ Template filter code falls into one of two situations:
.. code-block:: python
- from django.utils.html import conditional_escape
- from django.utils.safestring import mark_safe
-
- @register.filter(needs_autoescape=True)
- def initial_letter_filter(text, autoescape=None):
- first, other = text[0], text[1:]
- if autoescape:
- esc = conditional_escape
- else:
- esc = lambda x: x
- result = '<strong>%s</strong>%s' % (esc(first), esc(other))
- return mark_safe(result)
+ from django import template
+ from django.utils.html import conditional_escape
+ from django.utils.safestring import mark_safe
+
+ register = template.Library()
+
+ @register.filter(needs_autoescape=True)
+ def initial_letter_filter(text, autoescape=None):
+ first, other = text[0], text[1:]
+ if autoescape:
+ esc = conditional_escape
+ else:
+ esc = lambda x: x
+ result = '<strong>%s</strong>%s' % (esc(first), esc(other))
+ return mark_safe(result)
The ``needs_autoescape`` flag and the ``autoescape`` keyword argument mean
that our function will know whether automatic escaping is in effect when the
@@ -454,8 +457,9 @@ Continuing the above example, we need to define ``CurrentTimeNode``:
.. code-block:: python
- from django import template
import datetime
+ from django import template
+
class CurrentTimeNode(template.Node):
def __init__(self, format_string):
self.format_string = format_string
@@ -498,6 +502,8 @@ The ``__init__`` method for the ``Context`` class takes a parameter called
.. code-block:: python
+ from django.template import Context
+
def render(self, context):
# ...
new_context = Context({'var': obj}, autoescape=context.autoescape)
@@ -545,7 +551,10 @@ A naive implementation of ``CycleNode`` might look something like this:
.. code-block:: python
- class CycleNode(Node):
+ import itertools
+ from django import template
+
+ class CycleNode(template.Node):
def __init__(self, cyclevars):
self.cycle_iter = itertools.cycle(cyclevars)
def render(self, context):
@@ -576,7 +585,7 @@ Let's refactor our ``CycleNode`` implementation to use the ``render_context``:
.. code-block:: python
- class CycleNode(Node):
+ class CycleNode(template.Node):
def __init__(self, cyclevars):
self.cyclevars = cyclevars
def render(self, context):
@@ -664,6 +673,7 @@ Now your tag should begin to look like this:
.. code-block:: python
from django import template
+
def do_format_time(parser, token):
try:
# split_contents() knows not to split quoted strings.
@@ -722,6 +732,11 @@ Our earlier ``current_time`` function could thus be written like this:
.. code-block:: python
+ import datetime
+ from django import template
+
+ register = template.Library()
+
def current_time(format_string):
return datetime.datetime.now().strftime(format_string)
@@ -965,6 +980,9 @@ outputting it:
.. code-block:: python
+ import datetime
+ from django import template
+
class CurrentTimeNode2(template.Node):
def __init__(self, format_string):
self.format_string = format_string
7 docs/ref/templates/api.txt
View
@@ -286,6 +286,7 @@ fully-populated dictionary to ``Context()``. But you can add and delete items
from a ``Context`` object once it's been instantiated, too, using standard
dictionary syntax::
+ >>> from django.template import Context
>>> c = Context({"foo": "bar"})
>>> c['foo']
'bar'
@@ -397,6 +398,9 @@ Also, you can give ``RequestContext`` a list of additional processors, using the
optional, third positional argument, ``processors``. In this example, the
``RequestContext`` instance gets a ``ip_address`` variable::
+ from django.http import HttpResponse
+ from django.template import RequestContext
+
def ip_address_processor(request):
return {'ip_address': request.META['REMOTE_ADDR']}
@@ -417,6 +421,9 @@ optional, third positional argument, ``processors``. In this example, the
:func:`~django.shortcuts.render_to_response()`: a ``RequestContext``
instance. Your code might look like this::
+ from django.shortcuts import render_to_response
+ from django.template import RequestContext
+
def some_view(request):
# ...
return render_to_response('my_template.html',
Please sign in to comment.
Something went wrong with that request. Please try again.