forhandle er en smart, enkel indholdsforhandling for Python webapplikationer.
Indhold forhandling kan være svært at gøre godt. Ideelt set bør din kode være tør, og du ville ikke gentage de samme gamle standardtekst i flere view metoder for at udsende det samme domæne objekt i forskellige formater. forhandle med til at gøre dit liv endnu lettere ved at tillade dig at dekorere dine view metoder med formatere, der automatisk oversætter dit domæne objekter til det format, de ønsker kunden.
Det er virkelig nemt at bruge. Forhåbentlig dette eksempel (for en kolbe applikation) gør hovedpunkterne klar:
# Først skriver vi et par formatere der angiver, hvordan at oversætte
# Output af den opfattelse funktionen ind i et bestemt format. Her definerer vi en
# JSON formatter og en HTML formateringsplugin der tager en skabelon parameter.
fra negotiate.flask import formaterings
class JSONFormatter (formaterings):
& Nbsp; format = "JSON '
& Nbsp; mimetyper = ['application / JSON']
& Nbsp; def gøre (selv, OBJ):
& Nbsp; retur json.dumps (obj)
klasse HTMLFormatter (formaterings):
& Nbsp; format = "JSON '
& Nbsp; mimetyper = ['text / html']
& Nbsp; def konfigurere (self, skabelon):
& Nbsp; self.template = skabelon
& Nbsp; def gøre (selv, OBJ):
& Nbsp; returnere gøre (self.template, ** obj)
# Derefter, når bygningen programmet, dekorere vi visningen funktionen med
# "Forhandle" dekoratør, opregner de formater, hvor denne visning er tilgængelig.
fra negotiate.flask import forhandle
@ App.route ('/ stillinger /
@ App.route ('/ stillinger /
negotiate (JSONFormatter)
negotiate (HTMLFormatter, skabelon = 'post.html ")
def view_post (id, format = Ingen):
& Nbsp; post = Posts.by_id (id)
& Nbsp; hvis indlæg er None:
& Nbsp; afbryde (404)
& Nbsp; hvis ikke g.user.authorize ('læse', post):
& Nbsp; afbryde (401)
& Nbsp; tilbagevenden {"post": indlæg}
Resultatet er en visning handling, der vil returnere en HTML-version af Post som standard (dvs. med Accept: * / * og ingen eksplicit format), eller hvis .html er udtrykkeligt angivet, eller en JSON version af Post, hvis .json udvidelse er givet eller Accepter: application / JSON sendes med anmodningen.
Support
forhandle øjeblikket understøtter Flask og Pyloner, selvom tilføje understøttelse af andre web rammer bør være temmelig nemt. Tag et kig på forhandle / flask.py og forhandle / pylons.py at se den lille mængde integration nødvendige kode
Krav :.
- Python
Kommentarer ikke fundet