extandirect.Python / Zope / Django implementação de um roteador ext.direct | |
Baixe Agora |
extandirect. Classificação e resumo
Propaganda
- Licença:
- GPL v3
- Preço:
- FREE
- Nome do editor:
- Ian McCracken
- Site do editor:
- http://code.google.com/u/ian.mccracken/
extandirect. Tag
extandirect. Descrição
Implementação Python / Zope / Django de um roteador ext.direct Para usar o ExtDirect, você deve ter o SimpleJson instalado ou usar o Python 2.6 (que inclui SimpleJson como o pacote JSON) .extJS 3.0 fornece ext.direct, uma maneira extremamente simples de métodos remotos do lado do servidor para o lado do cliente. O ExtDirect fornece uma implementação de Python de um roteador ext.direct do lado do servidor, que pode aceitar e analisar os dados de solicitação de ext.direct, rote-o para o método correto e crie, codifique e retorne a estrutura de dados adequada, envolvendo os resultados. O ExtDirect também fornece uma classe que pode gerar o JavaScript do lado do cliente, definindo um provedor ext.direct de uma classe de roteador. Ver como funciona o lado do servidor. Primeiro, vamos definir um roteador: >>> de extdirect.router import directrouter >>> classe testutils (diretrouter): ..... DEF CAPITALIZE (auto, palavra): ... Retorne Word.upper () ... def hoje (auto): ... retorne "hoje é quarta-feira." Nós definimos dois métodos que queremos remotar para o cliente. Embora não tenhamos um cliente real neste corredor de teste, aqui Como alguém geraria o código que precisa ser dado ao cliente definindo o provedor. Ignorando a implementação real, que dependeria do enquadramento sendo usado, digamos que teremos essa classe disponível no URL '/ Utils', e queremos que nosso namespace do lado do cliente contendo esses métodos simplesmente seja chamado de "controle remoto". >>> de extdirect.router Importar DirectProviderDefinition >>> Imprimir DirectProviderDefinition (Testutils, '/ Utils', 'Remote'). Render () ext.onready (função () {EXT. Direct.addProvider ({Tipo: 'Remoting', URL: '/ utils', ações: {"testutils": }, namespace: 'remoto'});}); Agora, assumindo que, de uma forma ou de outra, fornecemos este código ao cliente e nossa classe está disponível nesse URL, agora podemos acessar esses métodos do navegador: Remote.Testutils.Capitalize ( {palavra: 'foo'}, console.log) esse exemplo faria uma chamada para o método 'capitalizar' em nossa classe Testutils e alimentar o resultado para o nosso retorno de chamada, que neste caso meramente imprime o resultado para o console JS. Veja como isso funcionaria a partir da perspectiva do servidor. Essa chamada faria uma solicitação de postagem com um corpo codificado JSON, então vamos criar que manualmente: >>> de extdirect.router Importar JSON >>> Data = {"Ação": "Testutils", "Método": "Capitalizar" "Dados": , "tipo": "rpc", "TID": 1} >>> Body = json.dumps (dados) Nosso nome de classe é passado como " Ação ", o nome do método como" método ", e quaisquer dados que enviamos como uma matriz de membro único contendo um hash de nossos parâmetros. Para nossos propósitos, "tipo" sempre será "RPC". Solicitações Ext.Direct também fornecem um ID de transação ("TID") que pode ser usado como você vê adequado para lidar com a possibilidade de dados obsoletos. Agora, vamos fazer uma instância de nossa classe do lado do servidor: >>> utils = testutils ( ) Esta instância é chamada e aceita o organismo de solicitações e retorna um objeto codificado JSON exibindo a estrutura esperada por ext.direct no cliente: >>> utils (corpo) '{"tid": 1, "ação": " Testutils "," Tipo ":" RPC "," Método ":" Capitalizar "," Resultado ":" Foo "} 'Observe o" resultado ", que é o que esperávamos. O cliente decodificaria esse objeto e passaria o valor "Result" para o retorno de chamada. Apenas por diversão, vamos verificar o nosso outro método definido: >>> Data = {"Ação": "Testutils", "Método": "Hoje", "Dados": [], "Tipo": "RPC", " TID ": 1} >>> Body = json.dumps (dados) >>> resultob = JSON.loads (utils (corpo) >>> Print Resultob Hoje é quarta-feira. E isso é: um muito maneira fácil de métodos remotos do lado do servidor para o lado do cliente. Requisitos: · Pitão O que há de novo nesta versão: · Subbackage de Django atualizado com o patch da avizoa substituindo "Import views" com o · Muito mais limpo "extdirect.autodescoper ()".
extandirect. Software Relacionado