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 /