There is nothing wrong in the /1/2/3 but I do not see where you use
that in the code. I see a lot of repeated and un-necessary selects. I
suspect you can simplify your code a lot.

Can you explain in words what you want to achieve?



On Jan 19, 10:53 pm, web-dev-m <[email protected]> wrote:
> Currently, in my application, I am passing navigational links in the
> header, such as /app/controller/view/1/2/3
>
> Where 1/2/3 are things the controller and view use to set the correct
> page.
>
> In my application, I am finding two problems with this.  First is
> security.  Although I have written validation on my controllers (I
> hope), I just worry that with more users some malicious person will
> find a way to get access they shouldn't.
>
> Second and more urgent is my application broke when I tried to write
> my first ajax function, I assume because the navigational variables
> are competing with the ajax variables somehow.  I say this because
> when I make the controller empty and just return a dict everything
> works as normal.  However, when I have the controller look for
> variables in request.vars and I then try to call an ajax function, it
> breaks hideously.
>
> I don't claim to be a great programmer, so it could definitely be a
> convention I am not following.
>
> Has anyone had this problem before?  How did you solve it? Should I
> pass my request.vars into the session and then have the view call
> them?
>
>  I read in the book that I can do ajax trapping and I haven't tried
> that yet, but I didn't think it would be necessary since I could make
> it work without it.  I will try it, but regardless I would love to get
> some feedback.
>
> for clarity, my code causing problems is below:
>
> def my_func():
>     if request.args:
>         #First, I check to see if there is a record, if there is, I
> get some information.
>         check=db(db.mydb.id==request.args(0)).select().first()
>         if check !=None:
>             records=db(db.mydb.id==request.args(0)).select()
>             row = db(db.mydb.id==request.args(0)).select().first()
>             counter=len(records)
>         #if it isnt, I make it with a function
>         else:
>             row = db(db.mydb.id==request.args(0)).select().first()
>             my_id=row.id
>             (filename, stream) =
> db.mydb.myfield.retrieve(row.resourcefield)
>             myfunc(id,filename,stream)
>             records=db(db.mydb.id==request.args(0)).select()
>             counter=len(records)
>         pass
>     #if there is no specific document request, generate a list of
> available files
>     else:
>         redirect(URL('mycontroller','this_function'))
>     return(counter=counter, records=records, row=row)
>
> def myajaxfunc():
>     form=SQLFORM(db.mydb2, _action="myajaxfunc")
>     if form.errors:
>         session.flash="Error: " + str(form.errors)
>     return XML(form)
>
> my view:
>
> {{for i in range(1,5):}}
>     <div id="my_div" onclick="ajax('myajaxfunc',[''],
> 'mytarget_{{=str(i)}}')">Click me to add a note</div>
>     <div id="mytarget_{{=str(i)}}"></div>
> {{pass}}

Reply via email to