Como criar Views no Plone

Olá pessoal,

Nesse post vou ensinar um conceito muito importante para quem vai desenvolver para Plone, que é a criação de views.

A View é o lugar onde você pode implementar a lógica de negócio de sua aplicação, ela irá processar e renderizar o resultado em um template. Importante notar que nosso template não precisa ser necessariamente uma página HTML, o retorno pode ser no formato que você quiser como XML ou Json por exemplo.

Uma View é composta geralmente de uma classe Python e um template (ZPT) associado a ela. A ideia é que façamos a separação entre a lógica do negócio e a camada de apresentação, mantendo o template o mais simples possível.

Como criar uma View?

Uma view pode ser criada através de uma classe Python simples que implementa na inicialização um objeto de context e request, mas a maneira mais comum de fazer issso é herdando da classe BrowserView presente no pacote Products.Five que já vem junto com o Plone.

Antes de começar, certifique-se de que você tem um produto Plone para fazer as modificações, se você ainda não criou o seu veja como criar um produto Plone utilizando o mr.bob e instalá-lo via buildout.

Vamos ao que interessa!

Acesse o diretório “browser” do seu produto e crie um arquivo chamado views.py (o nome do arquivo pode ser qualquer um de sua escolha).

Criar uma BrowserView é muito simples! Abra o arquivo views.py com seu editor de textos favorito e vamos criar nossa classe:

Vamos criar o template associado a nossa view. Ainda no diretório “browser”, crie o template:

Adicione um texto qualquer em nosso template para fins de teste:

Agora que já temos a classe e o template nós precisamos informar ao Plone que nossa view existe e darmos um nome a ela. Essa configuração é feita em arquivos ZCML (Zope Configuration Markup Language), um arquivo de configuração baseado em XML utilizado pelo Plone para registrar os mais diversos compontentes.

Dentro do diretório “browser” nós temos o arquivo “configure.zcml“. Vamos editá-lo!

Adicione as seguintes linhas ao final do arquivo, antes do fechamento da tag </configure>:

Vamos explicar cada um desses elementos.

for: Especifica quais tipos de conteúdo podem receber essa View. O uso do “*” significa que podemos chamá-la em qualquer lugar do portal, mas você poderia especificar a interface de um tipo de conteúdo qualquer a sua escolha.

name: Esse é o nome que chamaremos nossa view. Para evitarmos conflito com algum conteúdo existente no portal é recomendável o uso de “@@” antes do nome da view ao chamá-la na URL. Ex.: http://localhost:8080/Plone/@@my_first_view

permission: A permissão de acesso à view que criamos. A permissão “zope2.View” indica que ela é pública, ou seja, qualquer usuário pode acessar, mas também há outras opções que podem ser usadas tais como: cmf.ModifyPortalContent ou cmf.ManagePortal. Você pode encontrar mais informações sobre as permissões padrões do zope na documentação oficial.

class: A classe que criamos para representar nossa View. Onde podemos implementar a lógica de negócio.

template: O template associado a nossa view.

Para fazer o Plone reconhecer nossa nova View precisamos reiniciar as instâncias de nossa instalação, após poderemos acessá-la de qualquer lugar do portal bastando acrescentar ao final da URL: “/@@my_first_view

O resultado ao chamar nossa view no navegador deverá ser a apresentação do texto: “It’s works

Em resumo, para criar nossa própria BrowserView no Plone nós precisamos:

  1. Uma classe que herda de “BrowserView’;
  2. Um template;
  3. Registrar nossa View no arquivo de configuração “configure.zcml”

Legal! Já temos nossa View ativa e funcionando, agora vamos adicionar um comportamento qualquer para entendermos um pouco do que podemos fazer com Views 🙂

Em nosso arquivo views.py na classe MyFirstView vamos adicionar um método chamado ‘date’ para exibir a data atual no template.

E no template associado vamos utilizar a TAL (Template Attribute Language) para exibir o resultado:

O atributo tal:content substitui o conteúdo existente dentro do elemento html (nesse caso o <p>) pelo conteúdo informado. No exemplo nós estamos chamando o método ‘date’ de nossa view.

Espero que esse artigo seja útil para quem está começando com Plone e precisa deixar seus portais mais ricos e dinâmicos =)

Você pode ver o código completo feito nesse post no GitHub. =)

Abraços e até a próxima!

Sê o primeiro

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *