forhandle er en smart, enkel innholdsforhandling for Python webapplikasjoner.
Innhold forhandling kan være vanskelig å gjøre det bra. Ideelt sett bør koden være tørt, og du vil ikke bli gjentatt den samme gamle standardtekst i flere visningsmetoder for å avgi samme domene objekt i forskjellige formater. forhandle bidrar til å gjøre livet ditt enda enklere ved at du kan dekorere visningsmetoder med formatters som automatisk oversette dine domeneobjekter til det formatet spurt av klienten.
Det er veldig enkelt å bruke. Forhåpentligvis dette eksempelet (for en Flask søknad) gjør hovedpunktene klart:
# Først må vi skrive et par formatters som angir hvordan å oversette
# Utgang av den oppfatning funksjon i et bestemt format. Her definerer vi en
# JSON formaterings og en HTML formaterings som tar en mal parameter.
fra negotiate.flask import Atter
klasse JSONFormatter (Atter):
& Nbsp; format = 'json'
& Nbsp; mimetyper = ['application / json']
& Nbsp; def gjengi (selv, obj):
& Nbsp; retur json.dumps (obj)
klasse HTMLFormatter (Atter):
& Nbsp; format = 'json'
& Nbsp; mimetyper = [text / html ']
& Nbsp; def konfigurere (selv, mal):
& Nbsp; self.template = mal
& Nbsp; def gjengi (selv, obj):
& Nbsp; tilbake gjengi (self.template, ** obj)
# Deretter, når du bygger programmet, vi pynter utsikten funksjonen med
# "Forhandle" dekoratør, med en liste over formater som denne visningen er tilgjengelig.
fra negotiate.flask import forhandle
@ App.route ('/ innlegg /
@ App.route ('/ innlegg /
negotiate (JSONFormatter)
negotiate (HTMLFormatter, mal = 'post.html')
def view_post (id, format = Ingen):
& Nbsp; post = Posts.by_id (id)
& Nbsp; hvis innlegget er None:
& Nbsp; abortere (404)
& Nbsp; hvis ikke g.user.authorize ("lese", post):
& Nbsp; abortere (401)
& Nbsp; retur {'post': post}
Resultatet er et syn handling som vil returnere en HTML-versjon av innlegget som standard (dvs. med Godta: * / * og ingen eksplisitt format), eller hvis den .html er eksplisitt spesifisert, eller et JSON versjon av innlegget hvis .json forlengelse gis eller Godta: application / json sendes med forespørselen.
Support
forhandle støtter for tiden Flask og Ledningsmaster selv legge til støtte for andre web rammeverk bør være ganske lett. Ta en titt på forhandle / flask.py og forhandle / pylons.py å se den lille mengden av integrering kode som kreves
Krav .
- Python
Kommentarer ikke funnet