Ricardo,

Para você conseguir fazer o que deseja é necessário antes entender
como funciona a passagem de parâmetros em uma aplicação web.

A cada vez que é feita uma requisição a um objeto (seja um page
template, um DTML method, um python script) a partir do navegador do
usuário, é gerado um objeto request, que contém toda aquela
parafernália de dados que a gente vê no error log.  Dessa forma,
quando você, a partir de uma página, chama um python script, por
exemplo, pode acessar os dados passados lendo o objeto request.

Nesse ponto, depois de fazer o processamento necessário, você pode
tomar uma de duas decisões (pelo menos eu só me lembro de duas agora):

a) você faz um redirecionamento para outro objeto (return
context.REQUEST.RESPONSE.redirect(destination +
"?portal_status_message=" + parameter_to_pass) )
b) você chama um objeto (return container.index_ped(), por exemplo)

No caso "a'", é gerado um novo request novinho em folha, e a variável
portal_status_message é incluída nele.  Todo os dados do request
anterior (que estavam no formulário e outros) são apagados e você não
tem mais acesso a eles.

No caso "b", o request é mantido e você pode lê-lo no objeto chamado.

Uma variante do caso "b" é: return container.objeto(variavel=valor). 
Além de manter o request, você pode ainda ler a variável passada entre
parênteses no objeto chamado.  No caso de um page template, você pode
acessá-la por meio da variável options (options/variavel).

Faça uns testes e você saberá como diferenciar uma situação da outra
e, também, como ler os dados passados de um objeto para outro.

Zénrique.

Em 02/09/05, Ricardo Castilho<[EMAIL PROTECTED]> escreveu:
>  
>  
> 
> Bom dia lista, 
> 
>   
> 
>   Tenho uma aplicação que utiliza um banco de dados MSSQL para fazer
> lançamento de pedidos, consultas e etc... 
> 
>    O formulário que lança pedidos se utiliza de um PythonScript com o
> seguinte código: 
> 
>   
> 
> try: 
> 
>   container.fazer_pedido(usuario=usuario) 
> 
>   parameter_to_pass = url_quote("Pedido incluído com sucesso.!") 
> 
>   destination = 'index_html' 
> 
>   return context.REQUEST.RESPONSE.redirect(destination +
> "?portal_status_message=" + parameter_to_pass) 
> 
>   
> 
> except: 
> 
>   parameter_to_pass = url_quote("O pedido não pode ser incluído.") 
> 
>   destination = 'index_html' 
> 
>   return context.REQUEST.RESPONSE.redirect(destination +
> "?portal_status_message=" + parameter_to_pass) 
> 
>   
> 
> return container.index_ped() 
> 
>   
> 
>   
> 
> Meu problema é o seguinte, no caso de uma exceção eu precisaria exibir essa
> mensagem, mas não limpar os campos do formulário, ou seja, eu não quero
> recarregar a página, mas sim voltar para a página anterior, mesmo que eu
> tenha que abrir mão da mensagem de erro (se não tiver outro jeito). 
> 
>   
> 
> Alguém pode me ajudar? 
> 
> Agradeço desde já. 
> 
>   
> 
>   
> 
>   
> 
> =========================== 
> 
>       Ricardo Castilho Resende 
> 
>           Analista de Suporte 
> 
>    Companhia Valença Industrial 
> 
>        Fone: 75 36414121 R: 209 
> 
> =========================== 
> 
>   
> 
>  Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
>  Para desistir envie uma mensagem em branco para:
> [EMAIL PROTECTED] 
> 
>  
>  
>  Yahoo! Grupos, um serviço oferecido por: 
>  
> PUBLICIDADE
>  
>  ________________________________
>  Links do Yahoo! Grupos
>  
>  
> Para visitar o site do seu grupo na web, acesse:
> http://br.groups.yahoo.com/group/zope-pt/
>   
> Para sair deste grupo, envie um e-mail para:
> [EMAIL PROTECTED]
>   
> O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do
> Yahoo!.


Para enviar uma mensagem: zope-pt@yahoogrupos.com.br
Para desistir envie uma mensagem em branco para: [EMAIL PROTECTED] 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/zope-pt/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a