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 /