标签: drf-nested-routers

Django-rest-framework嵌套url与drf-nested-routers

我正在使用drf-nested-routers包构建嵌套API .

但是/domains/1/nameservers/给了我所有的名字服务器,不仅仅是一个与域#1相关的名字服务器

我认为问题是我使用默认教程NameServerViewSet实现

class NameserverViewSet(viewsets.ModelViewSet):
    queryset = Nameserver.objects.all()
    serializer_class = NameserverSerializer
Run Code Online (Sandbox Code Playgroud)

请帮我正确编码.

以下是drf-nested-routers github页面的示例.

drf-nested-routers提供了嵌套路由器,可以在下面生成url模式

\ domain\< - 域名列表\域{pk}\< - 一个域名,来自{pk]

\ domain {domain_pk} \nameservers\< - 域的名称服务器

{domain_pk}\domain {domain_pk} \nameservers\{pk}\< - 来自{pk}的特定域名服务器,来自{domain_pk}的域名

这是一个例子:

# urls.py
from rest_framework_nested import routers
from views import DomainViewSet, NameserverViewSet
(...)

router = routers.SimpleRouter()
router.register(r'domains', DomainViewSet)

domains_router = routers.NestedSimpleRouter(router, r'domains', lookup='domain')
domains_router.register(r'nameservers', NameserverViewSet)

urlpatterns = patterns('',
    url(r'^', include(router.urls)),
    url(r'^', include(domains_router.urls)),
)
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework drf-nested-routers

6
推荐指数
2
解决办法
6079
查看次数

drf-nested-routers RuntimeError('未找到父注册资源')

我正在尝试利用包 drf-nested-routers 在我的 API 中创建嵌套路由。

我试图跟随文档(https://github.com/alanjds/drf-nested-routers)并阅读多个 Stackoverflow 线程,希望能找出这个问题。

我想创建一个 NestedSimpleRouter。这是我目前在 routers.py 文件中的内容:

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from rest_framework_nested import routers
from api_v1.viewsets import DeviceViewSet, BreadcrumbViewSet

router = DefaultRouter()
router.register(r'devices', DeviceViewSet, base_name='devices')

device_breadcrumbs_router = routers.NestedSimpleRouter(router, r'breadcrumbs', lookup='breadcrumb')
device_breadcrumbs_router.register(r'breadcrumbs', BreadcrumbViewSet, base_name='breadcrumbs')

api_url_patterns = [
    path('', include(router.urls)),
    path('', include(device_breadcrumbs_router.urls)),
]
Run Code Online (Sandbox Code Playgroud)

然后我将 包含api_url_patterns在我的 urls.py 文件中:

from django.contrib import admin
from django.urls import path, include
from .routers import api_url_patterns

urlpatterns = [
    path('api/v1/', include(api_url_patterns)),
    path('admin/', admin.site.urls), …
Run Code Online (Sandbox Code Playgroud)

nested-routes django-rest-framework drf-nested-routers

5
推荐指数
1
解决办法
1071
查看次数

DRF - 嵌套路由器 - 在 POST/PUT/PATCH 上创建/更新嵌套对象

我目前正在启动一个简单的任务应用程序,我正在使用 Django 2.0.7、DRF 3.8.2 和 drf-nested-routes 0.90.2

我有这些模型:

class Client(TimeStampedModel):
    """
    This model describes a client for the railroader. It can be created by the manager in the back office
    We have at least one internal Client, which is Seelk, for internal projects
    """
    name = models.CharField(max_length=255, unique=True)
    description = models.TextField(null=True)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return "{} : {}".format(self.name, self.description)

class Project(TimeStampedModel):
    """
    This model represents a project for a client, which we are gonna track actions on
    """ …
Run Code Online (Sandbox Code Playgroud)

python django nested-routes django-rest-framework drf-nested-routers

4
推荐指数
1
解决办法
1547
查看次数

如何控制 Django Rest Framework (DRF) 中的版本控制

我想知道控制移动应用程序 API 版本的最佳实践是什么。

要求

  • 如果我更改数据库中的某些内容,应用程序的先前版本不应受到影响。
  • 目前我正在做...
path('v1/auth/', include('authentication.urls')),
path('v2/auth/', include('authentication.urls2')), # Example
path('v1/api/', include('contentstudio.urls')),
Run Code Online (Sandbox Code Playgroud)

django django-models django-views django-rest-framework drf-nested-routers

4
推荐指数
1
解决办法
2379
查看次数

DRF 序列化程序中多个查找字段的自定义超链接 URL 字段

我正在使用Django Rest Framework为我的项目开发 web api。在我的项目中,我需要像这样构建嵌套的 api 端点:

   /users/ - to get all users
   /users/<user_pk> - to get details of a particular user
   /users/<user_pk>/mails/ - to get all mails sent by a user
   /users/<user_pk>/mails/<pk> - to get details of a mail sent by a user
Run Code Online (Sandbox Code Playgroud)

所以,我使用drf-nested-routers来方便编写和维护这些嵌套资源。

我希望我所有端点的输出都有超链接,用于获取每个嵌套资源的详细信息以及其他详细信息,如下所示:

[
    {
        "url" : "http://localhost:8000/users/1",
        "first_name" : "Name1",
        "last_name": "Lastname"
        "email" : "name1@xyz.com",
        "mails": [
            {
                 "url": "http://localhost:8000/users/1/mails/1",
                 "extra_data": "This is a extra data",
                 "mail":{
                     "url": "http://localhost:8000/mails/3"
                     "to" : "abc@xyz.com", …
Run Code Online (Sandbox Code Playgroud)

python django serialization django-rest-framework drf-nested-routers

1
推荐指数
1
解决办法
4258
查看次数