Tuesday, October 4, 2011

Re: Thread-safeness of templates

  Are you sure your context is thread-safe, ie. it's rebuilt from scratch every time you render an email and not re-used, stored in a global variable, class variable, whatever? Your problem description very much sounds like someone is fiddling with the context while the template is rendering.

  A popular way to generate such a problem would be to use a literal dict as default parameter, something like:

    def my_render_email(recipient, context={}):
        context['email'] = recipient
        body = render_to_string('template.html', context
        ...

  That is absolutely positively guaranteed to blow up in your face when you least expect it.

        mjl


--
You received this message because you are subscribed to the Google Groups "Django users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/mW012mKt7pwJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment