Tastypie 入門
Tastypie 是一個可重用的應用程式(也就是說,它僅依賴於自己的程式碼並專注於提供 REST 風格的 API),並且適用於為任何應用程式提供 API,而無需修改該應用程式的原始碼。
不是每個人的需求都是一樣的,所以 Tastypie 竭盡全力提供足夠的鉤子來覆蓋或擴充套件它的工作方式。
例如,我們將向簡單的部落格應用程式新增 API。
*唯一的強制配置是在你的 INSTALLED_APPS 中新增’ tastypie ’ 。這不是絕對必要的,因為 Tastypie 只有兩個不需要的型號,但可以簡化使用。 *****
這是 myapp / models.py:
from tastypie.utils.timezone import now
from django.contrib.auth.models import User
from django.db import models
from django.utils.text import slugify
class Entry(models.Model):
user = models.ForeignKey(User)
pub_date = models.DateTimeField(default=now)
title = models.CharField(max_length=200)
slug = models.SlugField(null=True, blank=True)
body = models.TextField()
建立資源
REST 風格的架構討論資源,因此毫不奇怪地與 Tastypie 整合涉及建立資源類。對於我們的簡單應用程式,我們將在 myapp / api.py 中為這些檔案建立一個檔案,儘管它們可以存在於應用程式的任何位置:
MYAPP / api.py
from tastypie.resources import ModelResource
from myapp.models import Entry
class EntryResource(ModelResource):
class Meta:
queryset = Entry.objects.all()
resource_name = 'entry'
在 REST 中,一切都是資源,意味著物件被描述為資源。因此,建立 Tastypie REST API 涉及建立資源類。要建立資源,我們需要繼承 ModelResource 類。此 EntryResource 類將檢查 Entry 模型上的所有非關係欄位,並建立自己的 Api 欄位。這就像 Django Forms 的 ModelForm 一樣。
連線資源: 在建立資源時,我們需要告訴 Django,通過將 EntryResource 連線到 URL 來建立資源。
urls.py
from django.conf.urls import url, include
from myapp.api import EntryResource
entry_resource = EntryResource()
urlpatterns = [
url(r'^blog/', include('myapp.urls')),
url(r'^api/', include(entry_resource.urls)),
]
現在,如果我們檢查 **localhost:8000 / api / entry /,**我們將獲得 API 響應。
( Meta 類中的 resource_name 是可選的。如果沒有提供,它會自動從類名生成,刪除任何 Resource 例項並小寫字串。所以 EntryResource 將成為入口。這就是我們指定的 URL 中的原因 ../entry / )