Search code examples
pythonmodel-view-controllerweb2py

How to redirect user to 'view' without going through smartgrid in web2py


how do i redirect a registered user to his/her db.table.id 'view' without going through smartgrid in web2py?

i have tried using:

redirect(URL(f='first', args=['mydata/view', 'mydata/%s', %request.vars.name]))

where mydata is the view for my table db.mydata and 'first' is my function. It always returns to the smartgrid interface.


Solution

  • There are two problems. First, the final URL argument must be the record ID, but it looks like you are instead using a name (i.e., request.vars.name). Second, by default, the grid uses signed URLs, so you must either disable the signatures (not recommended) or add a user signature to the URL you generate. So, the link should be something like this:

    redirect(URL(f='first', args=['mydata', 'view', 'mydata', request.vars.id],
                 user_signature=True))
    

    Also, note that in the args list, each element can (and generally should) be a separate URL arg. So, instead of ['mydata/view', ...], it should be ['mydata', 'view', ...].