negociar es una inteligente, simple negociación de contenido para aplicaciones web de Python.
La negociación de contenido puede ser difícil de hacer bien. Lo ideal sería que el código debe estar seco, y no sería repetir el mismo texto modelo antiguo en múltiples métodos de vista con el fin de emitir el mismo objeto de dominio en diferentes formatos. negociar ayuda a hacer su vida más fácil al permitir que usted adorne sus métodos vista con formateadores que se traducen automáticamente los objetos de dominio en el formato solicitado por el cliente.
Es muy simple de usar. Esperemos que este ejemplo (para una aplicación Frasco) hace que los puntos principales claro:
# En primer lugar, escribir un par de formateadores que especifican cómo traducir la
# Salida de la función de vista en un formato particular. Aquí definimos un
# JSON formateador y un formateador HTML que toma un parámetro de plantilla.
desde negotiate.flask formateador importación
clase JSONFormatter (formateador):
& Nbsp; format = "json"
& Nbsp; mimetypes = ['application / json']
& Nbsp; def render (auto, obj):
& Nbsp; json.dumps retorno (obj)
HTMLFormatter clase (formateador):
& Nbsp; format = "json"
& Nbsp; mimetypes = ['text / html']
& Nbsp; def configurar (self, plantilla):
& Nbsp; self.template = plantilla
& Nbsp; def render (auto, obj):
& Nbsp; volver render (self.template, ** obj)
# A continuación, cuando la construcción de la aplicación, decoramos la función de vista con el
# "Negociar" decorador, una lista de los formatos en los que este punto de vista está disponible.
desde negotiate.flask importación negociar
@ App.route ('/ posts /
@ App.route ('/ posts /
negotiate (JSONFormatter)
negotiate (HTMLFormatter, plantilla = 'post.html')
def view_post (id, format = None):
& Nbsp; de post = Posts.by_id (id)
& Nbsp; si el poste es Ninguno:
& Nbsp; abortar (404)
& Nbsp; si no g.user.authorize ('leer', post):
& Nbsp; abortar (401)
& Nbsp; de retorno {"post": mensaje}
El resultado es una acción de vista que devolverá una versión HTML del mensaje por defecto (es decir, con Accept: * / * y hay un formato explícito), o si se especifica explícitamente la extensión .html o una versión JSON del puesto si el extensión .json se da o acepta: application / json se envía con la solicitud.
Atención:
negocian actualmente apoya Frasco y Pilones, aunque añadiendo soporte para otros frameworks web debería ser bastante fácil. Echa un vistazo a negociar / flask.py y negociar / pylons.py para ver la pequeña cantidad de código de integración requerido
Requisitos :.
- Python
Comentarios que no se encuentran