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 / )