On Monday, February 21, 2011 9:08:16 PM UTC-5, darkblue_b wrote:
>
> I guess I am still missing something..
> I wrote this, but, logged in, I get a msg that says "no json" and a
> blank screen
>
> ##-- controllers/data_hose.py
> from gluon.serializers import json
>
> @auth.requires_login()
>
> ##------------------------------------
> def get_data():
> sample_data = { 'key1' : 'response 1' }
> return sample_data
>
> def data_as_json():
> stuff = get_data()
> return json( stuff )
@auth.requires_login() is a Python decorator, so you have to put it on the
line immediately before the function you want to decorate -- in this case:
@auth.requires_login()
def data_as_json():
stuff = get_data()
return json(stuff)
See http://web2py.com/book/default/chapter/08#Decorators for more details.
Also, any function in your controller file that takes no arguments or
doesn't start with two underscores can be accessed via a URL request, so you
may not want a function like get_data() in your controller. If the sole
purpose of that function is to be called by other functions (such as
data_as_json), then you should either start it with two underscores (i.e.,
def __get_data()), make sure it takes at least one argument (e.g., def
get_data(dummy_arg)), or import it from a module. For more details, see
http://web2py.com/book/default/chapter/04#Dispatching.
Anthony