I guess it is not wrong, but I do not recommend too much code in
controllers, controllers should be for decide the app flow.
I reccomend you to create a module in /modules
# modules/myobjects.py
from gluon import *
request = current.request
class Myobjects(object):
def showsearch(self, db):
search
= db(db.listing.title==request.args(0)).select(db.listing.ALL)
items = []
for person in search:
items.append(DIV(A(person.first_name, _href=URL('listing',args=
person.id))))
return TAG[''](*items)
# modules/myobjects.py
then in controller you do:
# controllers/default.py
def search():
from myobjects import Myobjects
return dict(showsearch=Myobjects.showsearch(db))
# controllers/deafault.py
Note that you need to pass 'db' instance to the module
I think the controller code looks much better in this way, needs web2py
1.97+
On Mon, Aug 22, 2011 at 2:10 AM, Jarrod Cugley <[email protected]> wrote:
> Is there anything wrong with doing this inside default.py controller?:
>
> def search():
> def showsearch():
> search =
> db(db.listing.title==request.args(0)).select(db.listing.ALL)
> items = []
> for person in search:
> items.append(DIV(A(person.first_name, _href=URL('listing',
> args=person.id))))
>
> return TAG[''](*items)
> return dict(showsearch=showsearch())
>
> That is, nesting functions inside functions, I'm not getting an error,
> it's working as intended but is this a horrible practice to get into?
> Is there an ideal way?
--
--
Bruno Rocha
[ About me: http://zerp.ly/rochacbruno ]
[ Aprenda a programar: http://CursoDePython.com.br ]
[ O seu aliado nos cuidados com os animais: http://AnimalSystem.com.br ]
[ Consultoria em desenvolvimento web: http://www.blouweb.com ]