Thanks Toshio,
That seems to be the quickest way to do it.
Cheers,
Dolf.
P.S. I really like the quick, good and friendly answers of the people
on the list. Thanks all!
On Feb 18, 7:33 pm, Toshio Kuratomi <[EMAIL PROTECTED]> wrote:
> SmokeyD wrote:
> > Hey people,
>
> > sorry to bother you guys again. I have another question.
> > Is there a way to detect the tg_format argument to a controller
> > method?
>
> > Now, if I have a controller method, with @expose("json") which returns
> > a dict(form=DataGird(fields=fields),value=value)
> > and then call that controller with ?tg_format=json I get an error from
> > jsonify or something stating that the value is not jsonifiable (does
> > that word exist?;).
> > So instead I return
> > dict(form=DataGird(field=fields).render(value=value). In the template
> > I just use XML(form) to display the form if the controller is called
> > without tg_format=json.
> > I would rather detect in the controller though whether or not it is
> > called with tg_format=json so I can decide in the controller if it
> > should return the rendered or unrendered form.
>
> > Do I make any sense? I hope somebody can help. Thanks in advance.
>
> Here's two technique's for your problem:
>
> 1) This should do it. I use something similar for returning errors in
> one of my projects:
> ret_val = dict(value=value)
> if request.params.get('tg_format', 'html') == 'json':
> return ret_val
> ret_val['form']=DataGrid(fields=fields)
>
> 2) With my custom widgets I've taken to including an __json__() method
> that returns None. Since the data for the widget is being returned in a
> separate variable this means we just have an extra "widget:None" in the
> json return -- that's a lot less overhead than returning the html for
> the DataGrid. You can use this same technique by subclassing DataGrid
> and defining your own __json__() method:
>
> class MyWidget(DataGrid):
> def __json__(self):
> return None
>
> -Toshio
>
> signature.asc
> 1KDownload
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---