Opened 7 years ago
Closed 7 years ago
#29960 closed Bug (invalid)
`render_to_string` passes `None` for `context` if unspecified, but `Template.render` expects type `Context`
| Reported by: | Joshua Cannon | Owned by: | nobody |
|---|---|---|---|
| Component: | Template system | Version: | 2.1 |
| Severity: | Normal | Keywords: | render_to_string, template, context |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
I'm not sure if this is a bug bug or just misleading documentation, but the signature/docstring for render_to_string starts as follows:
def render_to_string(template_name, context=None, request=None, using=None):
"""
Load a template and render it with a context. Return a string.
...
The docstring would lead the reader to believe the context isn't optional. If the caller omits context, they will likely get the following exception:
AttributeError: 'NoneType' object has no attribute 'render_context'
which is due to Template.render's first line being:
def render(self, context):
with context.render_context.push_state(self):
...
The signature of Template.render would lead me to believe context is not optional and must be of type Context.
Change History (2)
comment:1 by , 7 years ago
| Easy pickings: | unset |
|---|
comment:2 by , 7 years ago
| Resolution: | → invalid |
|---|---|
| Status: | new → closed |
The type of the template that render_to_string calls render on is django.template.backends.django.Template, not django.template.Template (which was quoted).
Sorry for the noise.
Please give code to reproduce the problem. There are
render_to_string()calls intests/test_utils/tests.py, for example, that omit context without a problem.