Kaydet (Commit) 7264e5c6 authored tarafından Silvan Spross's avatar Silvan Spross

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

üst a7e28352
...@@ -300,18 +300,21 @@ Template filter code falls into one of two situations: ...@@ -300,18 +300,21 @@ Template filter code falls into one of two situations:
.. code-block:: python .. code-block:: python
from django.utils.html import conditional_escape from django import template
from django.utils.safestring import mark_safe 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): register = template.Library()
first, other = text[0], text[1:]
if autoescape: @register.filter(needs_autoescape=True)
esc = conditional_escape def initial_letter_filter(text, autoescape=None):
else: first, other = text[0], text[1:]
esc = lambda x: x if autoescape:
result = '<strong>%s</strong>%s' % (esc(first), esc(other)) esc = conditional_escape
return mark_safe(result) 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 The ``needs_autoescape`` flag and the ``autoescape`` keyword argument mean
that our function will know whether automatic escaping is in effect when the 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``: ...@@ -454,8 +457,9 @@ Continuing the above example, we need to define ``CurrentTimeNode``:
.. code-block:: python .. code-block:: python
from django import template
import datetime import datetime
from django import template
class CurrentTimeNode(template.Node): class CurrentTimeNode(template.Node):
def __init__(self, format_string): def __init__(self, format_string):
self.format_string = format_string self.format_string = format_string
...@@ -498,6 +502,8 @@ The ``__init__`` method for the ``Context`` class takes a parameter called ...@@ -498,6 +502,8 @@ The ``__init__`` method for the ``Context`` class takes a parameter called
.. code-block:: python .. code-block:: python
from django.template import Context
def render(self, context): def render(self, context):
# ... # ...
new_context = Context({'var': obj}, autoescape=context.autoescape) new_context = Context({'var': obj}, autoescape=context.autoescape)
...@@ -545,7 +551,10 @@ A naive implementation of ``CycleNode`` might look something like this: ...@@ -545,7 +551,10 @@ A naive implementation of ``CycleNode`` might look something like this:
.. code-block:: python .. code-block:: python
class CycleNode(Node): import itertools
from django import template
class CycleNode(template.Node):
def __init__(self, cyclevars): def __init__(self, cyclevars):
self.cycle_iter = itertools.cycle(cyclevars) self.cycle_iter = itertools.cycle(cyclevars)
def render(self, context): def render(self, context):
...@@ -576,7 +585,7 @@ Let's refactor our ``CycleNode`` implementation to use the ``render_context``: ...@@ -576,7 +585,7 @@ Let's refactor our ``CycleNode`` implementation to use the ``render_context``:
.. code-block:: python .. code-block:: python
class CycleNode(Node): class CycleNode(template.Node):
def __init__(self, cyclevars): def __init__(self, cyclevars):
self.cyclevars = cyclevars self.cyclevars = cyclevars
def render(self, context): def render(self, context):
...@@ -664,6 +673,7 @@ Now your tag should begin to look like this: ...@@ -664,6 +673,7 @@ Now your tag should begin to look like this:
.. code-block:: python .. code-block:: python
from django import template from django import template
def do_format_time(parser, token): def do_format_time(parser, token):
try: try:
# split_contents() knows not to split quoted strings. # split_contents() knows not to split quoted strings.
...@@ -722,6 +732,11 @@ Our earlier ``current_time`` function could thus be written like this: ...@@ -722,6 +732,11 @@ Our earlier ``current_time`` function could thus be written like this:
.. code-block:: python .. code-block:: python
import datetime
from django import template
register = template.Library()
def current_time(format_string): def current_time(format_string):
return datetime.datetime.now().strftime(format_string) return datetime.datetime.now().strftime(format_string)
...@@ -965,6 +980,9 @@ outputting it: ...@@ -965,6 +980,9 @@ outputting it:
.. code-block:: python .. code-block:: python
import datetime
from django import template
class CurrentTimeNode2(template.Node): class CurrentTimeNode2(template.Node):
def __init__(self, format_string): def __init__(self, format_string):
self.format_string = format_string self.format_string = format_string
......
...@@ -286,6 +286,7 @@ fully-populated dictionary to ``Context()``. But you can add and delete items ...@@ -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 from a ``Context`` object once it's been instantiated, too, using standard
dictionary syntax:: dictionary syntax::
>>> from django.template import Context
>>> c = Context({"foo": "bar"}) >>> c = Context({"foo": "bar"})
>>> c['foo'] >>> c['foo']
'bar' 'bar'
...@@ -397,6 +398,9 @@ Also, you can give ``RequestContext`` a list of additional processors, using the ...@@ -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 optional, third positional argument, ``processors``. In this example, the
``RequestContext`` instance gets a ``ip_address`` variable:: ``RequestContext`` instance gets a ``ip_address`` variable::
from django.http import HttpResponse
from django.template import RequestContext
def ip_address_processor(request): def ip_address_processor(request):
return {'ip_address': request.META['REMOTE_ADDR']} return {'ip_address': request.META['REMOTE_ADDR']}
...@@ -417,6 +421,9 @@ optional, third positional argument, ``processors``. In this example, the ...@@ -417,6 +421,9 @@ optional, third positional argument, ``processors``. In this example, the
:func:`~django.shortcuts.render_to_response()`: a ``RequestContext`` :func:`~django.shortcuts.render_to_response()`: a ``RequestContext``
instance. Your code might look like this:: instance. Your code might look like this::
from django.shortcuts import render_to_response
from django.template import RequestContext
def some_view(request): def some_view(request):
# ... # ...
return render_to_response('my_template.html', return render_to_response('my_template.html',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment