On Sun, Oct 19, 2008 at 12:58 AM, justind <[EMAIL PROTECTED]> wrote: > > Hello, > > No one has any ideas?
Settle down, Tiger. You asked this question on a Friday night. You may need to wait a little more than 18 hours if you want a response. We're all volunteers here, and many of us have professional and family obligations that take priority over answering questions on a mailing list. To answer your question - although it may not be immediately obvious to you _why_ this is occurring, the error message you have received does tell you exactly _what_ is occurring. Although form.errors appears to be a dictionary containing strings (i.e., a dictionay of lists of strings appear when you print form.errors), it's actually an ErrorDict that contains ValidationError objects. These, in turn, are manipulated in various ways to ensure correct unicode output - and one of those manipulations is the use of proxy objects (django.utils.functional.__proxy__). If you call str() on a proxy object, it will evaluate and return the underlying string, but the object itself isn't a string. SimpleJSON (and the Django copy of the SimpleJSON library) only knows how to serialized basic Python types, so it complains when you give it a proxy object. This use of proxy objects in this way was something introduced by the introduction of full unicode support in Django. Jacob's slide predate the introduction of feature, which explains why the example he gave doesn't work out of the box with a more recent Django version. However, If you force the rollout of the proxy objects before calling dumps(), SimpleJSON will correctly encode the form errors. Something like: >>> simplejson.dumps(dict((key,str(v) for v in values) for key,values in >>> form.errors.items()) should do the trick. Yours, Russ Magee %-) > The code I'm actually using in my view is almost identical to the > validage_contact view from > http://toys.jacobian.org/presentations/2007/oscon/tutorial/ (single > slide: > http://toys.jacobian.org/presentations/2007/oscon/tutorial/images/django-master-class.081.png) > and I'm using the JsonResponse function from those slides as well. > > Has something changed since these were published? Is this a bug? > > On Oct 17, 4:55 pm, "[EMAIL PROTECTED]" > <[EMAIL PROTECTED]> wrote: >> Hello, >> >> I'm having a hard time understanding why Django won't let me serialize >> a dictionary of form errors. Can anyone explain why Django throws an >> error if I try to serialize someform.errors, even if I copy it into a >> plain dictionary? >> >> #!/usr/bin/env python >> from django.utils import simplejson >> from project.main.models import SampleForm >> >> test = {} >> simplejson.dumps(test) # works >> >> test = {'key': [u"value"]} >> simplejson.dumps(test) # works >> >> # suppose SampleForms wants a text and url field >> # I just give it a text field to test >> form = SampleForm({"text": "sample text"}) >> d = {} # make a new dictionary >> # update d so we're working with a plain dictionary >> d.update(f.errors) >> type(d) # returns dict >> >> # fails: <django.utils.functional.__proxy__ object at 0x00C83810> >> # isnotJSONserializable >> simplejson.dumps(d) > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---