Andrum är en app som uppfyller Django till Representational State Transfer (REST).
Användning
Primer
Anstånd påverkas av Ruby on Rails, men i en anda av Python är det inte alls lika "magiskt". Det kommer dock att spara en hel del kod:
# Nyheter / models.py
från django.db importmodeller
klass artikel (models.Model):
& Nbsp; title = models.CharField (MAX_LENGTH = 255)
& Nbsp; content = models.TextField ()
& Nbsp; publicerat = Sant
& Nbsp; created_at = models.DateTimeField (auto_now_add = sant)
# Nyheter / urls.py
från django.conf.urls.defaults importera *
från respite.urls import resurs
från vyer importartikeln
urlpatterns = resurs (
& Nbsp; prefix = 'nyheter / artiklar ",
& Nbsp; view = artikeln
)
# Nyheter / views.py
från andrum import Vy
från modeller import artikel
klass artikeln (Visa):
& Nbsp; modell = artikel
& Nbsp; template_path = 'nyheter / artiklar "
& nbsp; supported_formats = ['html', 'json']
# mallar / nyheter / artiklar / index.html
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp; {% för artikel i artiklar%}
& Nbsp;
& Nbsp;
{{article.title}}
& Nbsp;
& Nbsp;
& Nbsp; {{article.content}}
& Nbsp;
& Nbsp;
& Nbsp; {% EndFor%}
& Nbsp;
# mallar / nyheter / artiklar / index.json
# ...
Standard åtgärder
Anstånd beskådar klassen definierar åtgärder för visning och manipulera modell instanser; index, show, nytt, skapa, redigera & sbquo; uppdatera och förstöra.
HTTP-metoden HTTP bana Funktion Syfte
GET artiklar / index Render en lista med artiklar
GET artiklar / nya nya Render ett formulär för att skapa en ny artikel
POST artiklar / Skapa Skapa en ny artikel
GET artiklar / 1 show Render en specifik artikel
GET artiklar / 1 / redigera redigera Render ett formulär för att redigera en specifik artikel
PUT artiklar / 1 uppdaterings Redigera en särskild artikel
DELETE artiklar / 1 förstör bort en specifik artikel
I ett nötskal, Andrum ger dig en samling av funktioner du behöver antagligen för de flesta av dina modeller och rutter dem restfully. Du kan åsidosätta någon eller alla av dessa funktioner och anpassa dem som du vill. Till exempel kan du bara räkna upp artiklar som har publicerats:
# Nyheter / views.py
klass artikeln (Visa):
& Nbsp; modell = artikel
& Nbsp; template_path = 'nyheter / artiklar "
& nbsp; supported_formats = ['html', 'json']
& Nbsp; def index (själv, begäran):
& Nbsp; artiklar = self.model.objects.filter (publicerad = sant)
& Nbsp; retur self._render (
& Nbsp; begäran = begäran,
& Nbsp; mall = "index",
& Nbsp; context = {
& nbsp; "artiklar": artiklar,
& Nbsp;},
& Nbsp; status = 200
& Nbsp;)
Du kan också utelämna en eller flera av de standardåtgärder helt och hållet. Till exempel kan du bara genomföra index och visa åtgärder:
# Nyheter / urls.py
från django.conf.urls.defaults importera *
från respite.urls import resurs
från vyer importartikeln
urlpatterns = resurs (
& Nbsp; prefix = 'nyheter / artiklar ",
& Nbsp; view = artikeln,
& Nbsp; åtgärder = ['index', 'show']
)
Anpassade åtgärder
Du är inte begränsad till avlastnings sju fördefinierade åtgärder; du kan lägga till valfritt antal anpassade åtgärder och dra dem du dock vilja:
# Nyheter / urls.py
från django.conf.urls.defaults importera *
från respite.urls importera resurs, action
från vyer importartikeln
urlpatterns = resurs (
& Nbsp; prefix = 'nyheter / artiklar ",
& Nbsp; view = artikeln,
& nbsp; custom_actions = [
& Nbsp; åtgärd (
& Nbsp; regex = r '(? P [0-9] +).? / Förhandsgranskning [a-zA-Z] * $',
& Nbsp; funktion = 'förhandsgranskning',
& Nbsp; metoder = ['GET'],
& Nbsp; name = 'preview_news_article'
& Nbsp;)
& Nbsp;]
)
# Nyheter / views.py
från andrum import Vy
från modeller import artikel
klass artikeln (Visa):
& Nbsp; modell = artikel
& Nbsp; template_path = 'nyheter / artiklar "
& nbsp; supported_formats = ['html', 'json']
& Nbsp; def förhandsgranskning (själv, begäran, id):
& Nbsp; artikeln = Article.objects.get (id = id)
& Nbsp; retur self._render (
& Nbsp; begäran = begäran,
& Nbsp; mall = 'förhandsgranskning',
& Nbsp; context = {
& Nbsp; 'artikel ": artikeln
& Nbsp;},
& Nbsp; status = 200
& Nbsp;)
Installation
- Pip installera git + http: //github.com/jgorset/respite.git
- Lägg respit till INSTALLED_APPS i inställningsfilen
- Lägg respite.middleware.HTTPPUTMiddleware till MIDDLEWARE_CLASSES i inställningsfilen
Om du inte bara bygga ett API, kanske du också vill lägga respite.middleware.HTTPMethodOverrideMiddleware till dina middle klasser; det underlättar för överstyrning av HTTP-metoden med X-HTTP-metod-Åsido header eller en _method HTTP POST parameter, vilket är det enda sättet att uppdatera (HTTP PUT) och radera (HTTP DELETE) resurser från en webbläsare.
Krav :
- Python
- Django
Kommentarer hittades inte