Respite ist eine App, Django zu Representational State Transfer (REST) entspricht.
Verwendung
Grundierung
Atempause durch Ruby on Rails beeinflusst, wenn auch im Geiste der Python ist es nicht annähernd so "Magie". Es versteht sich jedoch, sparen Sie eine Menge Code:
# News / models.py
von django.db Importmodelle
Klasse Artikel (models.Model):
& Nbsp; title = models.CharField (max_length = 255)
& Nbsp; content = models.TextField ()
& Nbsp; veröffentlicht = True
& Nbsp; created_at = models.DateTimeField (auto_now_add = True)
# News / urls.py
von django.conf.urls.defaults import *
von respite.urls Import Ressource
Ansichten von Importartikeldetailanzeige
urlpatterns = Ressource (
& Nbsp; prefix = "Nachrichten / Artikel"
& Nbsp; view = Artikeldetailanzeige
)
# News / views.py
Atempause von Import anzeigen
von Modellen Import Artikel
Klasse Artikeldetailanzeige (Ansicht):
& Nbsp; Modell = Artikel
& Nbsp; schablonen = 'Nachrichten / Artikel "
& Nbsp; supported_formats = ['html', 'json']
# Templates / news / articles / index.html
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp; {% für Artikel Artikel%}
& Nbsp;
& Nbsp;
{{article.title}}
& Nbsp;
& Nbsp;
& Nbsp; {{article.content}}
& Nbsp;
& Nbsp;
& Nbsp; {% endfor%}
& Nbsp;
# Templates / news / articles / index.json
# ...
Standardaktionen
Respite ansehen Klasse definiert Aktionen für die Anzeige und Bearbeitung von Modellinstanzen; Index, Show, neu, erstellen, bearbeiten & sbquo; zu aktualisieren und zu zerstören.
HTTP-Methode HTTP-Pfad Funktion Zweck
GET Artikel / index Render eine Liste von Artikeln
GET Artikel / neue neue Render eine Form, einen neuen Artikel erstellen
POST Artikel / erstellen Eine neue Seite anlegen
GET artikel / 1 Show Render einen bestimmten Artikel
GET Artikel / 1 / edit Render ein Formular, einen bestimmten Artikel zu bearbeiten
PUT artikel / 1-Update bearbeiten ein bestimmter Artikel
DELETE artikel / 1 zerstören einen bestimmten Artikel löschen
Kurz gesagt, bietet Respite Sie mit einer Sammlung von Funktionen, die Sie wahrscheinlich für die meisten Ihrer Modelle und leitet sie erholsam. Sie können einige oder alle dieser Funktionen außer Kraft setzen und passen sie, wie Sie möchten. Beispielsweise könnten Sie nur eine Liste Artikel, die veröffentlicht wurden:
# News / views.py
Klasse Artikeldetailanzeige (Ansicht):
& Nbsp; Modell = Artikel
& Nbsp; schablonen = 'Nachrichten / Artikel "
& Nbsp; supported_formats = ['html', 'json']
& Nbsp; def index (self, Anfrage):
& Nbsp; Artikel = self.model.objects.filter (veröffentlicht = True)
& Nbsp; Rück self._render (
& Nbsp; Anfrage = Anfrage,
& Nbsp; template = "Index",
& Nbsp; context = {
& Nbsp; "Artikel": Artikel,
& Nbsp;},
& Nbsp; Status = 200
& Nbsp;)
Sie kann auch eine oder mehrere der Standardaktionen wegzulassen. Beispielsweise könnten Sie nur die Umsetzung der Index und zeigen Aktionen:
# News / urls.py
von django.conf.urls.defaults import *
von respite.urls Import Ressource
Ansichten von Importartikeldetailanzeige
urlpatterns = Ressource (
& Nbsp; prefix = "Nachrichten / Artikel"
& Nbsp; view = Artikeldetailanzeige,
& Nbsp; actions = ['index', 'show']
)
Benutzerdefinierte Aktionen
Sie sind nicht auf sieben vordefinierte Aktionen Respite beschränkt; Sie können eine beliebige Anzahl von benutzerdefinierten Aktionen und verlegen Sie sie jedoch Sie mögen:
# News / urls.py
von django.conf.urls.defaults import *
von respite.urls importieren Ressource, Action
Ansichten von Importartikeldetailanzeige
urlpatterns = Ressource (
& Nbsp; prefix = "Nachrichten / Artikel"
& Nbsp; view = Artikeldetailanzeige,
& Nbsp; custom_actions = [
& Nbsp; Aktion (
& Nbsp; regex = r '(? P [0-9] +).? / Vorschau [a-zA-Z] * $',
& Nbsp; Funktion = 'Vorschau',
& Nbsp; Methoden = ['GET'],
& Nbsp; name = 'preview_news_article'
& Nbsp;)
& Nbsp;]
)
# News / views.py
Atempause von Import anzeigen
von Modellen Import Artikel
Klasse Artikeldetailanzeige (Ansicht):
& Nbsp; Modell = Artikel
& Nbsp; schablonen = 'Nachrichten / Artikel "
& Nbsp; supported_formats = ['html', 'json']
& Nbsp; def Vorschau (self, Anfrage, id):
& Nbsp; article = Article.objects.get (id = id)
& Nbsp; Rück self._render (
& Nbsp; Anfrage = Anfrage,
& Nbsp; template = 'Vorschau',
& Nbsp; context = {
& Nbsp; "Artikel": Artikel
& Nbsp;},
& Nbsp; Status = 200
& Nbsp;)
Installation
- Pip installieren git + http: //github.com/jgorset/respite.git
- Hinzufügen Atempause zu INSTALLED_APPS in Ihre Einstellungsdatei
- Hinzufügen respite.middleware.HTTPPUTMiddleware zu MIDDLEWARE_CLASSES in Ihre Einstellungsdatei
Wenn Sie nicht nur den Aufbau einer API, möchten Sie vielleicht auch zu respite.middleware.HTTPMethodOverrideMiddleware um Ihre Middleware-Klassen hinzuzufügen; es erleichtert die für das Überschreiben der HTTP-Methode mit dem X-HTTP-Method-Override-Header oder ein _method HTTP POST-Parameter, der die einzige Möglichkeit, zu aktualisieren (HTTP PUT) und löschen ist (HTTP DELETE) Ressourcen über einen Webbrowser.
Anforderungen :
- Python
- Django
Kommentare nicht gefunden