Opened 8 years ago

Closed 8 years ago

Last modified 8 years ago

#8031 closed (fixed)

Suppressing exceptions in templates harmful for debugging

Reported by: joerg@… Owned by: lukeplant
Component: Template system Version: master
Severity: Keywords:
Cc: Triage Stage: Design decision needed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:


Even when TEMPLATE_DEBUG is enabled, Django will currently silently suppress all exceptions during template rendering.
This makes it hard to find typos in the template (misspelled variable names), but can also hide other errors.

The concrete problem I hit was the conversion to permalink and the resolver not knowing functions specified directly as object and not string.
As the exception was ignored, all users of the permalink used the empty string.

It would be nice if the exceptions can be easily logged either to stderr ( runserver) or some file, potentially using another debug option in

Change History (4)

comment:1 Changed 8 years ago by lukeplant

  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Design decision needed

See this discussion:

General conclusion: we need to examine individual tags and see whether they should fail silently or not. I agree that it is never useful for the URL tag to fail silently. I'll bring it up on the list

comment:2 Changed 8 years ago by lukeplant

  • Owner changed from nobody to lukeplant
  • Status changed from new to assigned

comment:3 Changed 8 years ago by lukeplant

  • Resolution set to fixed
  • Status changed from assigned to closed

(In [8211]) Fixed #8031 - url tag no longer silences NoReverseMatch exceptions since this is very rarely useful

comment:4 Changed 8 years ago by lukeplant

If there are any other tags where exceptions are being unhelpfully silenced, please open a new ticket. Silent variable failure is a deliberate feature e.g.

{{ }}

should return nothing if foo is None, or if is None, or if is None.

Note: See TracTickets for help on using tickets.
Back to Top