Django REST Framework中嵌套路由的支持
项目描述
drf-nested-resources
这是一个django rest framework扩展,允许开发者创建嵌套资源。
如何使用
嵌套资源的配置
在这个例子中,我们将创建一个简单的API,具有以下端点
/developers/
/developers/<id>
/developers/<id>/languages/
/developers/<id>/languages/<id>
首先,我们从以下Django模型开始
from django.db.models import CASCADE
from django.db.models.base import Model
from django.db.models.fields import CharField
from django.db.models.fields.related import ForeignKey
class Developer(Model):
name = CharField(max_length=20)
class ProgrammingLanguage(Model):
name = CharField(max_length=20)
author = ForeignKey(
Developer,
related_name='programming_languages',
on_delete=CASCADE,
)
我们将为开发者
和语言
资源集合创建两个视图集。
from rest_framework.viewsets import ModelViewSet
from drf_nested_resources.fields import HyperlinkedNestedModelSerializer
class _DeveloperSerializer(HyperlinkedNestedModelSerializer):
class Meta(object):
model = Developer
fields = ('url', 'name', 'programming_languages')
class DeveloperViewSet(ModelViewSet):
queryset = Developer.objects.all()
serializer_class = _DeveloperSerializer
class _ProgrammingLanguageSerializer(HyperlinkedNestedModelSerializer):
class Meta(object):
model = ProgrammingLanguage
fields = ('url', 'name', 'author')
class ProgrammingLanguageViewSet(ModelViewSet):
queryset = ProgrammingLanguage.objects.all()
serializer_class = _ProgrammingLanguageSerializer
视图集中的相关字段author
和programming_languages
应遵循模型表示,以便author
为我们提供编写ProgrammingLanguage的开发者的URL,而programming_languages
应为我们提供开发者所编写的ProgrammingLanguages的URL列表。
这是生成它们的urlpatterns的方法
_RESOURCES = [
Resource(
'developer',
'developers',
DeveloperViewSet,
[
NestedResource(
'language',
'languages',
ProgrammingLanguageViewSet,
parent_field_lookup='author',
)
],
),
]
urlpatterns = make_urlpatterns_from_resources(_RESOURCES)
有关不同关系和授权的更多示例,请查看测试套件。
变更日志
版本 2.0.0
添加了对Django 2.2的支持,并移除了对Django < 2.2的支持
版本 1.3
更新了依赖关系并添加了覆盖率配置
版本 1.2 Beta 3
修复了当请求未显式设置urlconf时的错误
版本 1.2 Beta 2
修复了在ancestry中的视图集中检查权限时对非基于会话的身份验证器的支持
版本 1.2 Beta 1
实现了将嵌套资源中的字段值强制设置为向上资源URL的能力。这是通过序列化器的Meta
类上的可选属性field_forced_to_ancestor
来实现的。
版本 1.1
重新设计了URL生成机制,以支持交叉链接资源树。
重大变更:任何对当前请求URL中变量上的多对多字段的前期使用现在将失效。
版本 1.0 Release Candidate 3
添加了对命名空间URL的正确支持
版本 1.0 Release Candidate 1
添加了对Django 1.10和Rest Framework 3.4.3的支持
版本 1.0 Beta 1 (未发布)
初始发布。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
drf-nested-resources-2.0.0.tar.gz (9.0 kB 查看哈希值)