#24775: Template.render() throws exception when no language is activated
--------------------------+------------------------------------------------
Reporter: karmux | Owner: nobody
Type: | Status: new
Uncategorized |
Component: Template | Version: 1.8
system |
Severity: Normal | Keywords: template, render, translation, now
Triage Stage: | Has patch: 0
Unreviewed |
Easy pickings: 0 | UI/UX: 0
--------------------------+------------------------------------------------
I cannot render "now" template tag (and maybe some more tags that I
haven't tested).
{{{
In [1]: from django.template import Template, Context
In [2]: Template('{% now "Y" %}').render(Context())
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
<ipython-input-2-c2e400a38725> in <module>()
----> 1 Template('{% now "Y" %}').render(Context())
/usr/local/lib/python3.4/dist-packages/django/template/base.py in
render(self, context)
207 if context.template is None:
208 with context.bind_template(self):
--> 209 return self._render(context)
210 else:
211 return self._render(context)
/usr/local/lib/python3.4/dist-packages/django/template/base.py in
_render(self, context)
199
200 def _render(self, context):
--> 201 return self.nodelist.render(context)
202
203 def render(self, context):
/usr/local/lib/python3.4/dist-packages/django/template/base.py in
render(self, context)
901 for node in self:
902 if isinstance(node, Node):
--> 903 bit = self.render_node(node, context)
904 else:
905 bit = node
/usr/local/lib/python3.4/dist-packages/django/template/debug.py in
render_node(self, node, context)
77 def render_node(self, node, context):
78 try:
---> 79 return node.render(context)
80 except Exception as e:
81 if not hasattr(e, 'django_template_source'):
/usr/local/lib/python3.4/dist-packages/django/template/defaulttags.py in
render(self, context)
427 def render(self, context):
428 tzinfo = timezone.get_current_timezone() if
settings.USE_TZ else None
--> 429 formatted = date(datetime.now(tz=tzinfo),
self.format_string)
430
431 if self.asvar:
/usr/local/lib/python3.4/dist-packages/django/template/defaultfilters.py
in date(value, arg)
769 arg = settings.DATE_FORMAT
770 try:
--> 771 return formats.date_format(value, arg)
772 except AttributeError:
773 try:
/usr/local/lib/python3.4/dist-packages/django/utils/formats.py in
date_format(value, format, use_l10n)
134 be localized (or not), overriding the value of
settings.USE_L10N.
135 """
--> 136 return dateformat.format(value, get_format(format or
'DATE_FORMAT', use_l10n=use_l10n))
137
138
/usr/local/lib/python3.4/dist-packages/django/utils/formats.py in
get_format(format_type, lang, use_l10n)
108 return getattr(settings, format_type)
109 except KeyError:
--> 110 for module in get_format_modules(lang):
111 try:
112 val = getattr(module, format_type)
/usr/local/lib/python3.4/dist-packages/django/utils/formats.py in
get_format_modules(lang, reverse)
80 if lang is None:
81 lang = get_language()
---> 82 modules = _format_modules_cache.setdefault(lang,
list(iter_format_modules(lang, settings.FORMAT_MODULE_PATH)))
83 if reverse:
84 return list(reversed(modules))
/usr/local/lib/python3.4/dist-packages/django/utils/formats.py in
iter_format_modules(lang, format_module_path)
49 Does the heavy lifting of finding format modules.
50 """
---> 51 if not check_for_language(lang):
52 return
53
/usr/local/lib/python3.4/dist-
packages/django/utils/translation/__init__.py in
check_for_language(lang_code)
179
180 def check_for_language(lang_code):
--> 181 return _trans.check_for_language(lang_code)
182
183
/usr/lib/python3.4/functools.py in wrapper(*args, **kwds)
450 hits += 1
451 return result
--> 452 result = user_function(*args, **kwds)
453 with lock:
454 if key in cache:
/usr/local/lib/python3.4/dist-
packages/django/utils/translation/trans_real.py in
check_for_language(lang_code)
407 """
408 # First, a quick check to make sure lang_code is well-formed
(#21458)
--> 409 if not language_code_re.search(lang_code):
410 return False
411 for path in all_locale_paths():
TypeError: expected string or buffer
}}}
It's because get_language() returns None since Django 1.8. I think it
should handle the None type somehow and not throw an exception.
If I do translation.acticate('en') for example, then this exception goes
away since get_language() returns 'en' then.
--
Ticket URL: <https://code.djangoproject.com/ticket/24775>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/049.bf15da062b8f8bc576f513bb3880fe4a%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.