On Tue, Nov 17, 2009 at 7:35 PM, Karen Tracey <kmtra...@gmail.com> wrote:
> On Tue, Nov 17, 2009 at 1:12 PM, Tom Evans <tevans...@googlemail.com>wrote: > >> This appears to be some sort of issue between the mysqldb and django's >> templating system. >> >> This code generates the UnicodeEncodeError as shown above, when the model >> is saved: >> >> >> from django.template import loader >> content = loader.render_to_string('the_template.html', >> context_instance=ctxt) >> self.task.generated_content = content >> >> This code does not: >> >> >> from django.template import loader >> content = loader.render_to_string('the_template.html', >> context_instance=ctxt) >> self.task.generated_content = content[:] >> >> IE, taking a copy of the string that was rendered avoids mysql barfing on >> it as input. Bonus points if someone can explain what on earth it is that >> django is doing to a unicode string that stops mysql treating it as a >> unicode string! >> >> > content above is not a simple unicode string: > > >>> from ttt.models import Content > > >>> from django.template import loader > >>> c = loader.render_to_string('uni.html') > >>> c > u'\u2019' > >>> type(c) > <class 'django.utils.safestring.SafeUnicode'> > > Copying it the way you did turns it into a simple unicode type: > > >>> c2 = c[:] > >>> type(c2) > <type 'unicode'> > > However, even the SafeUnicode version works for me: > > > >>> m=Content(content=c) > >>> m.save() > >>> > > Yes, I am using MySQL backend. But I'm also using Django 1.1.1. I believe > the problem you have found here was found and fixed for ticket #6052: > > http://code.djangoproject.com/ticket/6052 > > This fix went into the 1.0.X branch about a year ago. You really should > run the current 1.0.X release, not 1.0. Branch releases contain bug fixes > only, so there should be no concern about backwards incompatibilities in > upgrading to the latest branch release. > > Karen > > Doh, double pointy hat to me :/ We run the current release on production, I must have a old branch installed on my dev box. I must also remind myself to actually check the type of the object (although it is confusing in pdb, I did 'p content' and it spat out "u'blah blah'" - too used to gdb which would have mentioned that ain't its type!) Cheers Tom -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=.