mdipierro wrote:
> because keyword appears both in get and in post. You can try:
>
>         form=SQLFORM.factory(
>                 Field('keyword',
>                     default=keyword,
>                     )
>                 _method="GET")
>
> or
>         form=SQLFORM.factory(
>                 Field('keyword',
>                     default=request.vars.keyword,
>                     ))
>         if form.accepts(request.post_vars, session):
>             response.flash = 'Submitted'
>
> really depends on what you need.
>


Thanks for your help. I was able to come up with a solution once I
understood the get and post vars.

The logic I was after is:
* On the page first displaying, if a keyword is provided in the url
parameters then use it as the default.
* On refreshing the page after a submit, use whatever value was
submitted.

Heres the code:

    def search():
        keyword = ''
        if 'keyword' in request.post_vars:
            keyword = request.post_vars.keyword
        elif 'keyword' in request.get_vars:
            keyword = request.get_vars.keyword
        form=SQLFORM.factory(
                Field('keyword',
                    default=keyword,
                    ),
                )
        if form.accepts(request.vars, session):
            response.flash = 'Submitted'
        return dict(form=form)

Reply via email to