negociar é uma inteligente, simples negociação de conteúdo para aplicações web em Python.
Negociação de conteúdo pode ser difícil de fazer bem. Idealmente, o seu código deve ser seco, e você não estaria repetindo o mesmo velho clichê em vários métodos de vista, a fim de emitir o mesmo objeto de domínio em diferentes formatos. negociar ajuda a tornar a sua vida ainda mais fácil, permitindo que você decorar seus métodos vista com formatadores que se traduzem automaticamente seus objetos de domínio no formato solicitado pelo cliente.
É realmente simples de usar. Esperemos que este exemplo (para uma aplicação Flask) faz com que os pontos principais clara:
# Primeiro, escrevemos um par de formatadores que especificam como traduzir a
# Saída da função de visualização para um formato particular. Aqui vamos definir uma
# JSON formatador e um formatador HTML que leva um parâmetro do modelo.
de negotiate.flask importação Formatter
classe JSONFormatter (Formatter):
& Nbsp; format = 'json'
& Nbsp; mimetypes = ['application / json']
& Nbsp; def render (self, obj):
& Nbsp; json.dumps retorno (obj)
HTMLFormatter classe (Formatter):
& Nbsp; format = 'json'
& Nbsp; mimetypes = ['text / html']
& Nbsp; def configurar (self, modelo):
& Nbsp; self.template = template
& Nbsp; def render (self, obj):
& Nbsp; retornar render (self.template, ** obj)
# Então, quando a criação do aplicativo, nós decoramos a função de visão com o
# "Negociar" decorador, listando os formatos em que essa visão está disponível.
de importação negotiate.flask negociar
@ App.route ('/ posts /
@ App.route ('/ posts /
negotiate (JSONFormatter)
negotiate (HTMLFormatter, template = "post.html ')
def view_post (id, formato = None):
& Nbsp; post = Posts.by_id (id)
& Nbsp; se post é None:
& Nbsp; abortar (404)
& Nbsp; se não g.user.authorize ("ler", post):
& Nbsp; abortar (401)
& Nbsp; return {'post': pós}
O resultado é uma ação vista que irá retornar uma versão HTML do post por padrão (ou seja, com Accept: * / * e nenhum formato explícito), ou se a extensão .html é explicitamente especificado, ou uma versão JSON do cargo se o extensão .json é dada ou Aceitar: application / json é enviado com o pedido.
Apoio
negociar atualmente suporta Flask e Pilões, embora a adição de suporte para outros frameworks web deve ser muito fácil. Dê uma olhada nas negociar / flask.py e negociar / pylons.py para ver a pequena quantidade de código de integração necessário
Requisitos :.
- Python
Comentários não encontrado