förhandla är en smart, enkel innehållsförhandling för Python webbapplikationer.
Innehåll förhandling kan vara svårt att göra bra. Helst bör din kod vara torr, och du skulle inte upprepa samma gamla standardtext i flera view metoder för att släppa ut samma domän objekt i olika format. förhandla hjälper till att göra ditt liv ännu enklare genom att du kan dekorera dina view metoder med formate som automatiskt översätter dina domän föremål i som kunden formatet.
Det är verkligen enkelt att använda. Förhoppningsvis detta exempel (för en Flask ansökan) gör de viktigaste punkterna tydlig:
# Först skriver vi ett par formate som anger hur man översätter det
# Utgång anser funktionen i ett visst format. Här definierar vi en
# JSON formateraren och en HTML formaterings som tar en mall parameter.
från negotiate.flask importFormate
klass JSONFormatter (Formatter):
& Nbsp; format = 'json "
& Nbsp; Mime-typer = ['application / json']
& Nbsp; def render (själv, obj):
& Nbsp; retur json.dumps (obj)
klass HTMLFormatter (Formatter):
& Nbsp; format = 'json "
& Nbsp; Mime-typer = ['text / html']
& Nbsp; def konfigurera (själv, mall):
& Nbsp; self.template = mall
& Nbsp; def render (själv, obj):
& Nbsp; återgå render (self.template, ** obj)
# Sedan, när du bygger programmet, dekorera vi utsikten funktionen med
# "Förhandla" dekoratör, listar de format som denna uppfattning är tillgänglig.
från negotiate.flask import förhandla
@ App.route ('/ inlägg /
@ App.route ('/ inlägg /
negotiate (JSONFormatter)
negotiate (HTMLFormatter, mall = 'post.html')
def view_post (id, format = None):
& Nbsp; stolpen = Posts.by_id (id)
& Nbsp; om inlägget är Ingen:
& Nbsp; abort (404)
& Nbsp; om inte g.user.authorize ("läsa", inlägg):
& Nbsp; abort (401)
& Nbsp; avkastning {"post": inlägg}
Resultatet är en vy åtgärd som kommer att återvända en HTML-version av tjänsten som standard (dvs med Accept: * / * och ingen uttrycklig format), eller om den .html uttryckligen anges, eller en JSON version av inlägg om det .json förlängning ges eller Acceptera: application / json skickas med begäran.
Support
förhandla närvarande stöder Flask och pyloner, även lägga till stöd för andra webbramverk borde vara ganska enkelt. Ta en titt på förhandla / flask.py och förhandla / pylons.py att se den lilla mängd integrationskoden krävs
Krav :.
- Python
Kommentarer hittades inte