onderhandelen is een slimme, eenvoudige onderhandelen over de inhoud voor Python web applicaties.
Onderhandelen over de inhoud kan moeilijk zijn om goed te doen zijn. Idealiter zou je code droog zijn, en je zou niet herhalen van dezelfde oude standaardtekst meerdere op het scherm methoden om hetzelfde domein object uitzenden in verschillende formaten. onderhandelen helpt om je leven nog makkelijker door u in staat om uw weergave methoden versieren met formatters dat uw domein objecten automatisch vertalen in de door de klant gevraagde formaat.
Het is echt eenvoudig te gebruiken. Hopelijk dit voorbeeld (voor een Kolf toepassing) maakt de belangrijkste punten duidelijk:
# Eerst schrijven we een paar formatters die aangeven hoe u het te vertalen
# Output van de functie uitzicht op een bepaald formaat. Hier definiëren we een
# JSON formatteerder en een HTML formatter dat een template parameter neemt.
van negotiate.flask import Formatter
klasse JSONFormatter (Formatter):
& Nbsp; format = "json"
& Nbsp; mimetypes = ['application / json "]
& Nbsp; def maken (zelf, obj):
& Nbsp; return json.dumps (obj)
klasse HTMLFormatter (Formatter):
& Nbsp; format = "json"
& Nbsp; mimetypes = ['text / html']
& Nbsp; def configureren (zelf, sjabloon):
& Nbsp; self.template = template
& Nbsp; def maken (zelf, obj):
& Nbsp; terug maken (self.template, ** obj)
# Dan, bij het bouwen van de applicatie, versieren we de functie weergave met de
# "Onderhandelen" decorateur, een opsomming van de formaten waarin deze visie is beschikbaar.
van negotiate.flask import onderhandelen
@ App.route ('/ berichten /
@ App.route ('/ berichten /
negotiate (JSONFormatter)
negotiate (HTMLFormatter, template = 'post.html')
def view_post (id, format = Geen):
& Nbsp; na = Posts.by_id (id)
& Nbsp; als bericht is Geen:
& Nbsp; af te breken (404)
& Nbsp; zo niet g.user.authorize ('gelezen', post):
& Nbsp; af te breken (401)
& Nbsp; return {'post': post}
Het resultaat is een actie van mening dat een HTML-versie van de post zal terugkeren standaard (dwz met Accept: * / * en geen expliciete formaat), of als de extensie .html expliciet wordt vermeld, of een JSON-versie van de post als het .json uitbreiding wordt gegeven of Accepteren: application / json wordt met het verzoek verzonden.
Ondersteuning
onderhandelen momenteel ondersteunt Kolf en pylonen, hoewel het toevoegen van ondersteuning voor andere web frameworks vrij eenvoudig moeten zijn. Neem een kijkje op onderhandelen / flask.py en onderhandelen / pylons.py de kleine hoeveelheid van de integratie-code vereist zien
Eisen .
- Python
Reacties niet gevonden